安卓多线程间通信和多进程之间通信有什么不同
2017-01-12 · 知道合伙人数码行家
知道合伙人数码行家
向TA提问 私信TA
1)共享变量(内存)
2)管道
3)handle机制
runOnUiThread(Runnable)
view.post(Runnable)
android 进程内的消息驱动机制---Handler,MessageQueue,Runnable,Looper
Looper和Message的处理机制:首先在主线程中创建了一个handler对象,目的是为了处理从子线程发送过来的消息,然后当子线程有发送消息的需求时会使用Message对象,消息首先会被存储在Message queue消息队列中,主线程还有一个Looper消息轮询器,会循环遍历消息队列中的消息,当发现消息的时候会发送消息给handler处理(更新ui等操作),handler调用handleMessage处理完后将Message置为null以便回收.
2进程间的通信
进程间的通信:
bind机制(IPC->AIDL)
linux级共享内存
boradcast
Activity之间可以通过intent来传递数据
3.安卓结束进程几种方式
1)使用ActivityManager中的restartPackage(String packname)方法,这里清单文件里面要配置权限
2)android.os.process.killProcess(int pid)只能终止本程序的进程
3)System.exit()
4)在android2.2版本之后则不能再使用restartPackage()方法,而应该使用killBackgroundProcesses()方法,同时应该配置权限
5)利用反射调用forceStopPackage来结束- Method forceStopPackage = am.getClass().getDeclaredMethod("forceStopPackage", String.class);
- forceStopPackage.setAccessible(true);
- forceStopPackage.invoke(am, yourpkgname);
6)使用Linux指令kill -9