1. adb shell kill -9 pid_of_app

AMS定义了AppDeathRecipient

APP 在 attachApplication -> attachApplicationLocked
AMS里会注册 App 进程的 BinderDeath通知

AppDeathRecipient adr = new AppDeathRecipient(app, pid, thread);
thread.asBinder().linkToDeath(adr, 0);

当App进程被杀了后
binder里的 binder_fops就会调用

binder_release -> binder_deferred_func -> binder_deferred_release -> BINDER_WORK_DEAD_BINDER(binder_thread_read) -> BR_DEAD_BINDER(binder_thread_read) -> BR_DEAD_BINDER(IPCThreadState::executeCommand) -> (BpBinder->sendObituary) -> (BpBinder->reportOneDeath) -> (JavaDeathRecipient->binderDied) -> BinderProxy.sendDeathNotice -> ActivityManagerService.binderDied -> appDiedLocked -> handleAppDiedLocked 清理相关资源 resumeFocusedStackTopActivityLocked 

注意,这种方式kill掉的进程不会调用 onDestroy

link to death

https://www.cnblogs.com/samchen2009/p/3316001.html

2. 通过Recents里removeTasks杀掉进程

AMS.removeTask -> ASS.removeTaskByIdLocked ->
TaskRecord.removeTaskActivitiesLocked -> 这里面会去finish掉当前Activity, 也就是会调用onDestroy
ASS.cleanUpRemovedTaskLocked -> ProcessRecord.kill ->
Process.killProcessQuiet -> sendSignalQuiet -> kill -9 pid (类似于kill -9)
Process.killProcessGroup -> killProcessGroup

后面的过程的1一样,通过binder death去通知AMS

转载于:https://www.cnblogs.com/aspirs/p/11530006.html

Android app是如何杀掉的相关推荐

  1. android adb杀死服务,Android app是如何杀掉的

    1. adb shell kill -9 pid_of_app AMS定义了AppDeathRecipient APP 在 attachApplication -> attachApplicat ...

  2. Android App定位和规避内存泄露方法研究

    from:http://site.douban.com/android/widget/notes/350758/note/167481484/ 工作中刚好用到,网上搜到的,觉得不错,与大家分享 And ...

  3. c++builder启动了怎么停止_App 竟然是这样跑起来的 —— Android App/Activity 启动流程分析...

    在我的上一篇文章: AJie:按下电源键后竟然发生了这一幕 -- Android 系统启动流程分析​zhuanlan.zhihu.com 我们分析了系统在开机以后的一系列行为,其中最后一阶段 AMS( ...

  4. Android App界面和流畅度优化

    Android App界面和流畅度优化 所谓界面和流畅度优化,就是尽可能多地消除用户可直接感知的.影响用户操作体验的bug 1.人为在UI线程中做轻微耗时操作,导致UI线程卡顿 人为避免一切耗时操作 ...

  5. Android app 后台被杀恢复

    android 模拟应用因内存不足被后台杀死命令 https://www.jianshu.com/p/effb4546b9aa adb shell am kill-all  应用通过home键已经停留 ...

  6. Android APP性能及专项测试(个人整理)

    Android性能测试分为两类: 1.一类为rom版本(系统)的性能测试 2.一类为应用app的性能测试 Android的app性能测试包括的测试项比如: 1.资源消耗 2.内存泄露 3.电量功耗 4 ...

  7. Android App Widget 开发

    概述 App Widget是应用程序窗口小部件(Widget),是微型的应用程序视图,它可以被嵌入到其它应用程序中(比如桌面)并接收周期性的更新.你可以通过一个App Widget Provider来 ...

  8. Android APP性能及专项测试(学习笔记)

    1. 性能测试 Android性能测试分为两类: 1.一类为rom版本(系统)的性能测试 2.一类为应用app的性能测试 Android的app性能测试包括的测试项比如: 1.资源消耗 2.内存泄露 ...

  9. Android app 性能测试以及专项测试

    1. 性能测试 Android性能测试分为两类: 1.一类为rom版本(系统)的性能测试 2.一类为应用app的性能测试 Android的app性能测试包括的测试项比如: 1.资源消耗 2.内存泄露 ...

  10. android app防被杀策略

    Service篇 <service             android:name="com.example.service.**Service"             ...

最新文章

  1. DevExpress组件之——TreeList组件
  2. java集群_身为Java程序员的你知道分布式与集群的联系及区别吗?
  3. Scala语言将加入宏指令
  4. 棘手的问题input:当在严格模式中使用 Vuex 时,在属于 Vuex 的 state 上使用 v-model,input
  5. fiddler证书 iphone_使用Fiddler进行iOS APP的HTTP/HTTPS抓包
  6. PAT乙级 1004 成绩排名
  7. android权限检查
  8. BFS POJ 3278 Catch That Cow
  9. PHP执行系统外部命令函数:exec()、passthru()、system()、shell_exec()
  10. Arrays和比较器
  11. Java-static概述
  12. 生意参谋 data 16进制数据解析还原
  13. 设置chrome浏览器访问http服务时使用麦克风
  14. 计算机课堂热身游戏,简单的两款小游戏,带你回味和同学在电脑课上的时光
  15. 计组(七)存储系统:芯片地址
  16. 半监督学习:semi-supervised learning 直推学习:transductive learning 主动学习:active learning
  17. multisim变压器反馈式_Multisim在负反馈放大器性能测试中的应用
  18. buck降压斩波电路
  19. 利用matlab怎样进行频谱分析
  20. 最新酒桌小游戏喝酒小程序源码_带流量主源码下载

热门文章

  1. 实验板FPGA型号在哪里看_项目分享| 自制FPGA最小系统板(PCB可直接打板)
  2. 拓端tecdat|R语言公交地铁路线进出站数据挖掘网络图可视化
  3. 拓端tecdat|R语言用Rcpp加速Metropolis-Hastings抽样估计贝叶斯逻辑回归模型的参数
  4. python-判断一个字符串是目录还是文件及批处理方法
  5. Java从入门到精通 第21章 Annotation
  6. UnimplementedError: Fused conv implementation does not support grouped convolutions for now
  7. 图卷积网络详细介绍(三)
  8. python实现同一目录文件下所有Excel数据文件的合并
  9. 很特别的动态规划教程
  10. python--图像轮廓findContours