一、进程概念
进程就像一个车间,线程就像一条流水线
进程是线程的容器
一个进程里,资源是所有线程共享的
一个进程实际是程序的抽象
在Manifest里的application或者Activity中加入标签
android:process="com.test"即创建了一个名字为com.test的独立进程(全局进程)
如果加了冒号,相当于在原进程的空间里附加了一个进程(私有进程)
什么情况下使用多进程?
每个进程都有使用内存限制,开辟多了进程可以扩大APP的使用内存,但进程更多更耗电,需要权衡
进程见有内存不可见性,所以各个进程之间是相互独立的
二、多进程间通信IPC
多进程,单线程
使用Messenger --> 利用Handler
多进程,多线程
使用AIDL(不建议,除非很复杂的应用)
使用Messenger实现多进程通信方法:
使用Messenger进行多线程通信
1.首先创建一个MessengerService
1 public class MessengerService extends Service { 2 3 // 适合于多进程,单线程,不需要考虑线程安全 4 Messenger mMessenger = new Messenger(new IncomingHandler()); 5 6 static class IncomingHandler extends Handler { 7 @Override 8 public void handleMessage(Message msg) { 9 super.handleMessage(msg); 10 // 处理消息 11 switch (msg.what) { 12 case 0: 13 // 动作 14 break; 15 } 16 } 17 } 18 19 @Nullable 20 @Override 21 public IBinder onBind(Intent intent) { 22 return mMessenger.getBinder(); 23 } 24 }