个中linkDeath的第二个参数是个标记位,我们直接设为0即可。经由膳绫擎的两个步调就给我们的binder设置了逝世亡代劳,当binder逝世亡的时刻我们就可以收到通知了。别的Binder的办法isBinderAlive也可以断定Binder是否逝世亡。
Android中的IPC方法
- 应用Bundle
四大年夜组件中的三大年夜组件(Activity、Service、Receiver)都是支撑Intent中传递Bundle数据的,因为Bundle实现了Pracel接口,所以它可以很便利的在不合的过程间传输。基于这一点,当我们调用了另一个过程中的Activity、Service、Receiver时,我们就可以在Bundle中附加我们须要传输给长途过程的信息并经由过程Intent产生出去。当然,被传输的数据必须可以或许被序列化,比如根本类型,实现了Pracelable、Serialzable接口以及一些Android支撑的特别对象。具体可以看Bundle这个类!
- 文件共享
两个过程经由过程读/写同一个文件交换数据,比如A过程把数据写入文件,B过程经由过程攫取这个文件来获取数据。因为Android体系基于Linux,所以并发读/写文件没有限制性,甚至两个线程对同一个文件进行写操作都是许可的,尽管这会出现问题,除了交换根本信息之外,我们可以序列化一个对象到文件体系中的同时大年夜另一个过程恢复这个对象。文件共享的局限性是,并发读/写问题,如不雅并发读/写,读出的数据可能不是最新的,如不雅是并发写的话就更严重了。
SharePreferences也属于文件的一种,然则因为体系对它的读/写竽暌剐必定的缓存策略,即在内存中会有一份SharePreferences文件的缓存,是以在多过程的情况下,体系对它的读/写变得弗成靠,当面对高并发读/写数据就很有很大年夜几率损掉数据,不建议在过程间通信中应用SharePreferences。
- Messenger
经由过程Messenger可以在不合过程中传递Message对象,在Message中放入我们须要传入的数据,就可以实现数据的过程间传递了。Messenger是一种轻量级的IPC筹划,它的底层实现是AIDL,并对AIDI做了封装,使得可以很便利的进行过程间通信。同时,因为处理一个请求,是以在办事端我们不消推敲线程同步的问题。
- 办事端相干代码
在AndroidManifest 设备办事 android:process=”:remote”
- 客户端
- private Messenger mMessenger;
- private static final String TAG = "MainActivity";
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- Intent intent = new Intent(this, MessengerService.class);
- bindService(intent, mServiceConnection, Context.BIND_AUTO_CREATE);
- }
- private ServiceConnection mServiceConnection = new ServiceConnection() {
- @Override
- public void onServiceConnected(ComponentName name, IBinder service) {
推荐阅读
中国人平易近银行宣布他们在近期成立了金融科技(FinTech)委员会。金融科技是技巧驱动的金融立异,为金融成长注入了新的活力,也给金融安然带来了新挑衅。中国人平易近银行将组织深刻研究金>>>详细阅读
本文标题:Android中的IPC机制
地址:http://www.17bianji.com/lsqh/35226.html
1/2 1

网友点评
精彩导读
科技快报
品牌展示