Android 进程摘要 - litonghui/TechBlog GitHub Wiki

Android 几种进程:

前台进程:Activity 或者绑定的Service。

可见进程:处于onPause()状态下的Activity 或者绑定的Service。

服务进程:startService 方法启动的Service用户不可见,处于非播放页面的音乐播放器,非下载页面的视频下载。

后台进程:处于onStop()状态下的Service,后台挂起的QQ或者微信等IM软件。

空进程:不包含任何应用程序的程序进程,直接干掉。

避免进程被杀死:

提高进程等级:可见进程Service 通过startForegound 让Service 进程成为前台进程;在Mainfest 文件中,intent-filter 节点添加android:priotity 属性1000,最高优先级;

自动重启服务:onStartCommond 返回START_STICKY 或 TART_REDELIVER_INTENT 服务被杀死,自动重启;在ondestory 中startService()

技术扩展:jni fork 进程 ;前台保留1px 页面。

进程间通信方式:

Android 程序之间不能共享内存,不同程序之间通信方式依靠四大组件通信。

1. Activity

2. Service

3. Broadcast

4. Content Provider

跨进程访问应用程序之间的数据,返回对象是cursor,可以修改对应程序数据。
自定义Provider: Mainfest 文件中声明:
  <provider    
   android:authorities="main.contentprovider" 
   android:name=".provider.MainProvider"
   android:readPermission="main.READ"
  />
ContentProvider中的URI : content://main.contentprovider/table/1024
结构:content:// + authorities + path +id

进程间通信机制:Binder

Client、Server、Service Manager 运行在用户控件的程序;Binder 驱动运行在内核空间。
Binder 驱动程序提供设备文件/dev/binder与用户空间交互;client、server 和 service manager 通过open 和 ioctl 文件操作函数和binder 驱动程序进行通信
Client 和 server 之间进程间通信通过Binder 驱动程序间接实现。