我们经常会遇到进程间的通信,列举几个进程间数据通信的方法
1.BroadcastReceiver
广播可以携带数据,并且是跨进程通信的,这个大家都很熟悉,用法就不用多说了
2.Settings.System
这个操作简单,可以存取简单的值,并且跨进程,具体用法如下
Long callOutTime = Settings.System.getLong(getContentResolver(), "call_calculate_out", 0l);//在dialer模块读取数据
Settings.System.putLong(getContentResolver(), "call_calculate_out", 55l);//在Factorymode存数据
调试的时候可以直接赋值
adb shell setptop call_calculate_out 0
调试的时候读取值
adb shell getptop call_calculate_out
3.aidl
这个就不多说了,耳熟能详,应用广泛,但操作起来比较麻烦
4.SystemProperties
这个读的时候都能读,但set的时候需要权限,也可以用adb shell getptop xxx和adb shell setptop xxx xxx
5.Messenger信使和service实现跨进程
对于Messenger,大家可能不太熟悉,这个也叫底层aidl,比aidl操作简便,具体实现如下
定义一个services
public class ServiceTest extends Service {