首页 > 代码库 > 【 Android官方文档读书笔记】保存数据

【 Android官方文档读书笔记】保存数据

Android提供了3种数据保存方式:SharePreference、文件与数据库。

1,SharePreference

如果想保存一个相对较小的key-values集合,可以使用 SharedPreferences API. SharedPreferences对象指向包含key-value对的文件,并且提供简单的读写方式。每个SharedPreferences文件均由框架管理,私人或共享均可使用。其本质是一个xml文件。

数据读入:

SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);

long highScore = sharedPref.getInt(key, defaultValue);

   数据写入:

SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPref.edit();
editor.putInt(getString(R.string.saved_high_score), newHighScore);
editor.commit();


2,文件

File 对象适用于在start-to-finish读取或写入大量数据,File对象适合于读取或者写入大量数据,但是缺点是更新数据比较困难。Android文件存储分为内部存储和外部存储。内部存储特点:始终可用;保存的文件只能用于默认应用程序;当用户卸载应用程序时,系统会从内部存储删除应用程序所有文件。因此,当要确保无论用户还是其他应用程序均可访问文件时,内部存储无疑是最好的选择。外部存储的特点:并不总是可用的;具有全局可读性,所以保存的文件可能被控制范围外的人读取;用户想要卸载应用程序,只有当 应用程序文件保存在getExternalFilesDir()目录时系统才会删除应用程序文件。因此,对于不需要访问限制的文件以及要同其他应用程序共享或者允许用户使用计算机访问的文件,外部存储无疑是最好的途径。

在内部存储保存文件时,你可以调用两种方法之一来获取相应的目录文件:
getFilesDir() 返回表示应用程序内部目录的文件
getCacheDir() 返回表示应用程序临时缓存文件的内部目录的文件。


外部存储的权限:

<manifest ...>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    ...
</manifest>


3,数据库

Android使用SQLite来支持数据库操作,SQLite是一个轻量级的数据库,支持基本SQL语法,是常被采用的一种数据存储方式。Android为此数据库提供了一个名为SQLiteDatabase的类,封装了一些操作数据库的API。一般重复或结构化数据使用数据库来保存。

数据读取示例:

Cursor c = db.query(
    FeedEntry.TABLE_NAME,  // The table to query
    projection,                               // The columns to return
    selection,                                // The columns for the WHERE clause
    selectionArgs,                            // The values for the WHERE clause
    null,                                     // don‘t group the rows
    null,                                     // don‘t filter by row groups
    sortOrder                                 // The sort order
    );


更新数据写库示例:

SQLiteDatabase db = mDbHelper.getReadableDatabase();

ContentValues values = new ContentValues();// New value for one column
values.put(FeedEntry.COLUMN_NAME_TITLE, title);// Which row to update, based on the ID

String selection = FeedEntry.COLUMN_NAME_ENTRY_ID + " LIKE ?";
String[] selectionArgs = { String.valueOf(rowId) };
 
int count = db.update(FeedReaderDbHelper.FeedEntry.TABLE_NAME, values, selection, selectionArgs);



【 Android官方文档读书笔记】保存数据