1. ActivityManagerService 集中管理所有进程的内存资源分配。所有进程需要申请或释放内存之前必须调用 ActivityManagerService 对象,获得其“许可”之后才能进行下一步操作,或者 ActivityManagerService 将直接“代劳”。类 ActivityManagerService 中涉及到内存回收的几个重要的成员方法如 下:trimApplications(),updateOomAdjLocked(),activityIdleInternal() 。这几个成员方法主要负责 Android 默认的内存回收机制,若 Linux 内核中的内存回收机制没有被禁用,则跳过默认回收。

2.可参见 ActivityManagerService.java。
回收动作入口:activityIdleInternal()
Android 系统中内存回收的触发点大致可分为三种情况。第一,用户程序调用 StartActivity(), 使当前活动的 Activity 被覆盖;第二,用户按 back 键,退出当前应用程序;第三,启动一个新的应用程序。这些能够触发内存回收的事件最终调用的函数接口就是 activityIdleInternal()。当 ActivityManagerService 接收到异步消息 IDLE_TIMEOUT_MSG 或者 IDLE_NOW_MSG 时,activityIdleInternal() 将会被调用

3.进程被杀死的条件是:
● 必须是非 persistent 进程,即非系统进程;
● 必须是空进程,即进程中没有任何 activity 存在。如果杀死存在 Activity 的进程,有可能关闭用户正在使用的程序,或者使应用程序恢复的时延变大,从而影响用户体验;
● 必须无 broadcast receiver。运行 broadcast receiver 一般都在等待一个事件的发生,用户并不希望此类程序被系统强制关闭;
● 进程中 service 的数量必须为 0。存在 service 的进程很有可能在为一个或者多个程序提供某种服务,如 GPS 定位服务。杀死此类进程将使其他进程无法正常服务。
以上条件缺一不可。


更多相关文章

  1. Android调试命令收录
  2. Android(安卓)5.0之后如何获取topStack
  3. android 上的一个网络接口和图片框架
  4. android内存泄漏分析的一种方式
  5. Android(安卓)ADT中增大AVD内存后无法启动:emulator failed to al
  6. Activity启动流程
  7. Android(安卓)Activity被回收后的处理
  8. Android中查看CPU和内存
  9. Android(安卓)ril原生代码(C/C++)和java代码部分分析

随机推荐

  1. android仿网易云音乐引导页、仿书旗小说F
  2. 范例解析:学习Android的IPC主板模式
  3. Android(安卓)2.3系统令人为之兴奋的十大
  4. 【Android(安卓)内存优化】Bitmap 内存缓
  5. 波音787 Dreamliner娱乐系统将选择Androi
  6. android 字节数据的转换与处理
  7. 是时候让 Android(安卓)Tools 属性拯救你
  8. pc 应用 通过 usb adb 与 android客户端
  9. ArcGIS for Android(安卓)Runtime100 基
  10. 使用jni接口完成android本地程序的运行--