精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2011-03-16
最后修改:2011-03-17
Android为你提供了多个可选的方式来保存持久的应用数据。你可以基于特定的需求来选择解决方案,例如数据是否应该是你的应用私有的还是对其他应用(和用户)公开的以及你的数据需要多大的空间来储存。
你可选的数据储存方式如下: 使用Shared Preferences (Using Shared Preferences)SharedPreferences 类提供了一个通用的框架来允许你以"键-值对"的形式来储存和获取持久的基础数据。你可以使用SharedPreferences 来保存任何基础数据:boolean, float, int, long和String。这些数据将存留横跨用户对话(即使你的应用程序被杀死了)。User PreferencesShared
preferences are not strictly for saving "user preferences," such as
what ringtone a user has chosen. If you're interested in creating user
preferences for your application, see
要给你的应用获取一个SharedPreference 对象,使用以下的两个函数之一:
写入数值: 1.调用edit() 函数来获得一个SharedPreferences.Editor 对象。 2.通过putBoolean() 、putString() 等函数来添加数值。 3.通过commit() 函数来提交和确认操作。 要读取数值,使用SharedPreferences 中的getBoolean() 、getString() 等函数。 这里是一个例子,为一个计算器的按键静音模式保存了一个偏好: public class Calc extends Activity { public static final String PREFS_NAME = "MyPrefsFile"; @Override protected void onCreate(Bundle state) { super.onCreate(state); . . . // Restore preferences SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0); boolean silent = settings.getBoolean("silentMode", false); setSilent(silent); } @Override protected void onStop() { super.onStop(); // We need an Editor object to make preference changes. // All objects are from android.context.Context SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0); SharedPreferences.Editor editor = settings.edit(); editor.putBoolean("silentMode", mSilentMode); // Commit the edits! editor.commit(); } } 使用内部存储器 (Using the Internal Storage)你可以直接将文件保存到设备的内部存储器上。默认的,保存到内部存储器上的文件是对你的应用私有的并且其他应用无法访问它们(用户也不行)。当用户卸载你的应用,这些文件会被移除。要创建和写入一个私有文件到内部存储器: 1.通过文件名和处理模式调用openFileOutput() 函数。返回的是一个FileOutputStream 对象。 2.使用write() 函数来写入文件。 3.使用close() 函数来关闭流。
For example: String FILENAME = "hello_file"; String string = "hello world!"; FileOutputStream fos = openFileOutput(FILENAME, Context.MODE_PRIVATE); fos.write(string.getBytes()); fos.close();MODE_PRIVATE 会创建文件并使它对你的应用私有。其他可用的模式有:MODE_APPEND 、 MODE_WORLD_READABLE
和MODE_WORLD_WRITEABLE
。
要从内部存储器中读取一个文件: 1.调用openFileInput() 函数并传递一个文件名来读取。返回的是一个FileInputStream 对象。 2.使用read() 函数读取文件中的字节。 3.然后使用close() 函数关闭流。 提示 :如果你希望在编译的时候保存一个静态的文件到你的应用中,将文件保存到你项目的res/raw/ 目录下。你使用openRawResource() 函数可以打开它,传递一个R.raw.<filename> 资源ID。该函数返回一个你可以用来读取文件的InputStream 对象(但你无法改写原始文件)。 保存缓存文件 (Saving cache files)如果你想缓存一些数据,而不是永久储存,你应该使用getCacheDir() 来打开一个代表内部存储器中储存临时缓存文件的目录的File 对象。
当设备的内部储存空间较低时,Android可能会删除这些缓存文件来取回空间。无论如何,你不应该依靠系统来为你清空这些文件。你应该始终自己来维护缓存文件并维持在一个合理的空间消耗,比如1MB。当用户卸载你的应用,这些文件会被移除。
其他有用的函数 (Other useful methods) getFilesDir()
getDir()
deleteFile()
fileList()
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
浏览 2071 次