安卓多线程间通信和多进程之间通信有什么不同

 我来答
huanglenzhi
2017-01-12 · 知道合伙人数码行家
huanglenzhi
知道合伙人数码行家
采纳数:117538 获赞数:517183
长期从事计算机组装,维护,网络组建及管理。对计算机硬件、操作系统安装、典型网络设备具有详细认知。

向TA提问 私信TA
展开全部
1.安卓线程间通信的方式有以下几种

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来结束
  1. Method forceStopPackage = am.getClass().getDeclaredMethod("forceStopPackage", String.class);
  2. forceStopPackage.setAccessible(true);
  3. forceStopPackage.invoke(am, yourpkgname);
配置文件中需要添加定义:android:sharedUserId="android.uid.system"    另外需要再在配置文件添加权限:<uses-permission android:name="android.permission.FORCE_STOP_PACKAGES"></uses-permission>  

6)使用Linux指令kill -9

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式