1、 通过Context.getSharedPreferences(String fileName,int mode)方法,可以打开一个xml文件,文件的位置在/data/data/package_name/shared_prefs/fileName.xml,如果不存在,则会自动创建。可以对该文件进行读写操作,在应用内的各组件之间共享数据。如果将mode设置为Context.MODE_WORLD_READ或者Context.MODE_WORLD_WRITE,则还可以被其他应用访问到。不过这不是android推荐的方式,要实现跨应用共享数据,推荐的方式是用ContentProvider实现



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,这部分内容下次再单独介绍



更多相关文章

  1. Android去掉标题栏及崩溃问题
  2. Android(安卓)EventLog
  3. Android动态获取权限,多组权限
  4. Android的Dialog开发和运用
  5. Android(安卓)ormlite 框架介绍
  6. ViewPager占用满屏问题解决方法
  7. Windows下Android(安卓)SDK Manage下载速度缓慢的解决方法
  8. FileProvider
  9. Android(安卓)IBinder机制简单介绍

随机推荐

  1. Android 可以自定义速度的跑马灯效果
  2. Android的简介
  3. Ubuntu 下搭建 Android(安卓)开发环境
  4. Android 2.2 demos -- Window Feature
  5. Android(安卓)NDK编译Box2D_V2.2
  6. Android开机自启动应用开发
  7. Unity打包——Android和IOS
  8. mac电脑开发android,找不到国产设备
  9. 修改Android系统属性SystemProperties.se
  10. Android(安卓)ImageView用法(xml)