# Android开发经验谈之应用间数据共享

**URL:** <https://www.isharkfly.com/t/android/2164>\
**Category:** 程序语言\
**Created:** [November 29, 2012, 12:46am UTC](https://www.isharkfly.com/t/android/2164 "2012-11-29T00:46:33Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![honeymoose](https://www.isharkfly.com/user_avatar/www.isharkfly.com/honeymoose/32/20796_2.png) [@honeymoose](https://www.isharkfly.com/u/honeymoose)\
**Post date:** [November 29, 2012, 12:46am UTC](https://www.isharkfly.com/t/android/2164/1 "2012-11-29T00:46:33Z")

</div>

对于应用程序之间的数据共享，Android提供了比较灵活的方式，相关的开发经验下面是Android123平时使用的方法。

1. 简单配置文件:

SharedPreferences方式存储的配置文件，我们在各个应用间可以通过getSharedPreferences(“Android123”, Context.MODE\_PRIVATE); 这样的方式存储，最后是共享模式，这里使用了私有，而通过全局读、全局写可以让其他的应用访问，通过createPackageContext方法，但是在Android 1.5 以后，共享访问需要相同UID和签名才可以访问。

1. SQLite数据库文件

对于一些较为复杂的配置或数据，在Android平台上我们一般使用SQLite数据库存储，对于共享我们可以提供ContentProvider接口来实现，我们虽然可以获取当前应用的数据库保存位置，通过Context的getDatabasePath(String name)这个方法，由于应用的PackageName比较长可能会发生变动，Android提供了类似Intent的方式来匹配一些Uri，比如说电话拨号为 tel:// 而对于网址可以使用 http:// 对于定做坐标使用geo://，而我们的数据库可以通过UriMatcher类的addURI添加一些Uri，通过隐式Intent方式实现自己的处理方式，具体的大家可以查看短信应用的开源代码 Mms.git 了解。

1. 对于运行中的高性能数据共享

在Android中共享内存方法可以使用Linux底层的mmap方式，对于跨进程访问，使用IPC，当然Android还提供了AIDL远程服务来实现数据绑定访问处理，所以说对于Android Service的开发，一定要记住通过Bind方式来开发，比较典型的有音乐播放器，Music.gif
