浏览 3824 次
锁定老帖子 主题:android数据持久化总结
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2011-08-06
2、 如果要访问另一个应用创建的shared_prefs文件,需要满足2个条件,首先另一个应用要设置MODE_WORLD_READ或MODE_WORLD_WIRTE权限,并且要知道另一个应用的package_name,然后就可以通过Context.createPackageContext()方法,就可以得到另一个应用的context,然后context.getSharedPreferences()方法,就可以打开shared_prefs文件了。不过这种方法并不推荐 3、 在罕见的情况下,如果既把shared_prefs的权限设置为MODE_PRIVATE,又希望某些其他的应用可以访问到,那么可以在manifest文件中配置android:user_id(好像是这个属性),让多个应用共享USER_ID。因为本质上shared_prefs文件是采用linux的权限控制的,MODE_PRIVATE类似于-rw-------,所以如果多个应用使用了同一个USER_ID,自然都对这个文件有访问权限了 4、 除了比较方便的shared_prefs,也可以创建自定义文件,方法是Context.openFileOutput(),可以在/data/data/package_name/files/目录下创建指定的文件,除此以外,和上面提到的shared_prefs都一样。不过操作起来就复杂一些了。要读取用这种方式创建的文件,可以用Context.openFileInput()方法 5、 此外,还可以在SD卡上操作文件,通过标准的java.io包内的API就可以。不过要注意的是,SD卡内采用的是FAT文件系统,所以不支持linux的文件读写权限控制,这点和shared_prefs与file不太一样。如果需要对文件进行读写权限控制,就不能采用写入SD卡的方式 6、 也可以用android自带的SQLite数据库来做数据持久化,主要用到的类包括SQLiteOpenHelper和SQLiteDatabase。 SQLiteOpenHelper主要有onCreate()、onUpgrade()、getWritableDatabase()等方法。getWritableDatabase()方法返回的是SQLiteDatabase对象实例,如果数据库尚未创建,则会自动调用onCreate()方法来创建数据库,所以一些建表和数据初始化操作,应该放在onCreate()方法里 SQLiteDatabase这个类相当于JDBC中的Connection,也类似Hibernate中的Session,或者Spring中的HibernateTemplate。该对象已经对基本的数据库操作进行了封装。可以调用insert()、delete()、executeSQL()等方法,进行实际的数据库操作 开发的时候一般会对这2个类做一下包装,比如进行简单的封装,使SQLiteDatabase的查询方法不是返回原始的Cursor类(Cursor相当于JDBC中的ResultSet),而是返回业务对象等等 7、 android中要实现跨应用共享数据,规范的方式是使用ContentProvider,使其他应用可以得到某个应用对外提供的数据,而不需要知道这个应用的实现细节。系统自带的provider放在android.provider包下,比如通讯录等。如果需要的话,开发者也可以提供自己的ContentProvider,这部分内容下次再单独介绍 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2011-08-10
总结很好,支持了
|
|
返回顶楼 | |