Android 数据持久化

1.数据库SQLite
处理大量数据以及与数据有关的逻辑时使用
数据库数据文件data/data/packageName/datebases/test.db
platform tools目录 adb, sqlite3

给予权限才能看到.db
adb shell 
su -c "chmod 777 /data"
su -c "chmod 777 /data/data"

查看数据文件用sqlite3
SELETE * FROM table;(分号)http://jingyan.baidu.com/article/c843ea0b9bbf1b77931e4ad4.html
2.轻量级处理SharedPreferences
适合app默认配置的保存(初始化时使用)

public static void put(Context context, String key, Object object) {
    SharedPreferences sp = context.getSharedPreferences(FILE_NAME, Context.MODE_PRIVATE);
    SharedPreferences.Editor editor = sp.edit();

    if (object instanceof String) {
        editor.putString(key, (String) object);

    } else if (object instanceof Integer) {
        editor.putInt(key, (Integer) object);

    } else if (object instanceof Boolean) {
        editor.putBoolean(key, (Boolean) object);

    } else if (object instanceof Float) {
        editor.putFloat(key, (Float) object);

    } else if (object instanceof Long) {
        editor.putLong(key, (Long) object);

    } else {
        editor.putString(key, object.toString());

    }
    SharedPreferencesCompat.apply(editor);
}

public static Object get(Context context, String key, Object defaultObject) {
    SharedPreferences sp = context.getSharedPreferences(FILE_NAME, Context.MODE_PRIVATE);
    if (defaultObject instanceof String) {
        return sp.getString(key, (String) defaultObject);

    } else if (defaultObject instanceof Integer) {
        return sp.getInt(key, (Integer) defaultObject);

    } else if (defaultObject instanceof Boolean) {
        return sp.getBoolean(key, (Boolean) defaultObject);

    } else if (defaultObject instanceof Float) {
        return sp.getFloat(key, (Float) defaultObject);

    } else if (defaultObject instanceof Long) {
        return sp.getLong(key, (Long) defaultObject);

    }
    return null;
}

3.ContentProvider
跨应用共享数据和使用系统数据如联系人,图片,视频,音频

//query 获取联系人
ContentResolver contentResolver = this.getContentResolver();
Cursor cursor = contentResolver.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,null,null,null);
if(cursor!=null) {
    while (cursor.moveToNext()) {
        int index = cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME);
        String name = cursor.getString(index);
        String phone = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
    }
}

4.文件I/O
java.io.FileInputStream和java.io.FileOutputStream这两个类来实现对文件的读写(导出文件使用,不适合做数据交互)
5.网络请求服务器数据
少量涉及安全的数据需要实时获取并保存在服务器

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值