Android SDK 开发之数据存储
2010-03-23 03:52:00 来源:WEB开发网super.onStop();
// Save user preferences. We need an Editor object to
// make changes. All objects are from android.context.Context
SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
SharedPreferences.Editor editor = settings.edit();
editor.putBoolean("silentMode", mSilentMode);
// Don't forget to commit your edits!!!
editor.commit();
}
}
Files 文件
你可以直接将文件保存在移动设备上,或者在一个可移动存储设备上. 默认情况下, 其它的应用程序无法访问这些文件.
为从文件读取数据, 调用Context.openFileInput()然后将文件路径和名称传给它. 它将返回一个标准的Java FileInputStream 对象. 要向文件写入数据, 使用Context.openFileOutput(), 并 传入文件名来. 它将返回一个FileOutputStream对象. 试图从另一个程序来调用这些方法读写相同的文件名是不行的; 你只能访问本地文件.
如果你在编译期有一个静态文件和你的程序一同打包, 你可以将这个文件保存为 res/raw/myDataFile, 然后使用Resources.openResource(R.raw.myDataFile)来读取. 它将返回一个InputStream对象, 你可以用这个对象来从文件读数据.
Databases 数据库
android API包含对创建和使用SQLite数据库的支持. 每个数据库为创建它的应用程序私有.
SQLiteDatabase 对象代表一个数据库, 并且有用来与它交互的方法 -- 查询和管理数据等. 要创建一个数据库, 调用SQLiteDatabase.create()并且创建一个SQLiteOpenHelper的子类.
作为SQLite数据库系统支持的一部分, android暴露出数据库管理的函数, 它们让你可以将复杂的数据储存在有用的对象中. 例如,android为联系人信息定义了一个数据类型; 该数据类型包含姓名, 地址, 电话号码, 照片以及其它描述一个人的信息.
android内置sqlite3数据库工具, 它使你能够浏览表内容, 运行sql命令,以及运行其它sql数据库的功能. 详见Examine databases文档.
所有的数据库, 包括sqlite和其它的, 都被储存在设备上的/data/data/package_name/databases中.
需要创建多少个表, 每张表包含多少数据, 它们如何连接不在本文档的讨论范围之内. 但是android并不会在SQLite概念之外施加任何约束. 我们推荐包含一个自动增加的键作为一个唯一的id来快速索引记录. 这个对于私有数据是不必要的, 但是如果你实现一个content provider, 那么你必须包含这样一个唯一的id域. 关于这类问题的详细讨论可以参看Content Providers文档, 以及NotPad示例代码的NotePadProvider类.
Network 网络
你也可以使用网络来存取数据. 使用以下包内的类:
java.net.*
android.net.*
更多精彩
赞助商链接