Android app是如何杀掉的
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
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是如何杀掉的相关推荐
- android adb杀死服务,Android app是如何杀掉的
1. adb shell kill -9 pid_of_app AMS定义了AppDeathRecipient APP 在 attachApplication -> attachApplicat ...
- Android App定位和规避内存泄露方法研究
from:http://site.douban.com/android/widget/notes/350758/note/167481484/ 工作中刚好用到,网上搜到的,觉得不错,与大家分享 And ...
- c++builder启动了怎么停止_App 竟然是这样跑起来的 —— Android App/Activity 启动流程分析...
在我的上一篇文章: AJie:按下电源键后竟然发生了这一幕 -- Android 系统启动流程分析zhuanlan.zhihu.com 我们分析了系统在开机以后的一系列行为,其中最后一阶段 AMS( ...
- Android App界面和流畅度优化
Android App界面和流畅度优化 所谓界面和流畅度优化,就是尽可能多地消除用户可直接感知的.影响用户操作体验的bug 1.人为在UI线程中做轻微耗时操作,导致UI线程卡顿 人为避免一切耗时操作 ...
- Android app 后台被杀恢复
android 模拟应用因内存不足被后台杀死命令 https://www.jianshu.com/p/effb4546b9aa adb shell am kill-all 应用通过home键已经停留 ...
- Android APP性能及专项测试(个人整理)
Android性能测试分为两类: 1.一类为rom版本(系统)的性能测试 2.一类为应用app的性能测试 Android的app性能测试包括的测试项比如: 1.资源消耗 2.内存泄露 3.电量功耗 4 ...
- Android App Widget 开发
概述 App Widget是应用程序窗口小部件(Widget),是微型的应用程序视图,它可以被嵌入到其它应用程序中(比如桌面)并接收周期性的更新.你可以通过一个App Widget Provider来 ...
- Android APP性能及专项测试(学习笔记)
1. 性能测试 Android性能测试分为两类: 1.一类为rom版本(系统)的性能测试 2.一类为应用app的性能测试 Android的app性能测试包括的测试项比如: 1.资源消耗 2.内存泄露 ...
- Android app 性能测试以及专项测试
1. 性能测试 Android性能测试分为两类: 1.一类为rom版本(系统)的性能测试 2.一类为应用app的性能测试 Android的app性能测试包括的测试项比如: 1.资源消耗 2.内存泄露 ...
- android app防被杀策略
Service篇 <service android:name="com.example.service.**Service" ...
最新文章
- DevExpress组件之——TreeList组件
- java集群_身为Java程序员的你知道分布式与集群的联系及区别吗?
- Scala语言将加入宏指令
- 棘手的问题input:当在严格模式中使用 Vuex 时,在属于 Vuex 的 state 上使用 v-model,input
- fiddler证书 iphone_使用Fiddler进行iOS APP的HTTP/HTTPS抓包
- PAT乙级 1004 成绩排名
- android权限检查
- BFS POJ 3278 Catch That Cow
- PHP执行系统外部命令函数:exec()、passthru()、system()、shell_exec()
- Arrays和比较器
- Java-static概述
- 生意参谋 data 16进制数据解析还原
- 设置chrome浏览器访问http服务时使用麦克风
- 计算机课堂热身游戏,简单的两款小游戏,带你回味和同学在电脑课上的时光
- 计组(七)存储系统:芯片地址
- 半监督学习:semi-supervised learning 直推学习:transductive learning 主动学习:active learning
- multisim变压器反馈式_Multisim在负反馈放大器性能测试中的应用
- buck降压斩波电路
- 利用matlab怎样进行频谱分析
- 最新酒桌小游戏喝酒小程序源码_带流量主源码下载
热门文章
- 实验板FPGA型号在哪里看_项目分享| 自制FPGA最小系统板(PCB可直接打板)
- 拓端tecdat|R语言公交地铁路线进出站数据挖掘网络图可视化
- 拓端tecdat|R语言用Rcpp加速Metropolis-Hastings抽样估计贝叶斯逻辑回归模型的参数
- python-判断一个字符串是目录还是文件及批处理方法
- Java从入门到精通 第21章 Annotation
- UnimplementedError: Fused conv implementation does not support grouped convolutions for now
- 图卷积网络详细介绍(三)
- python实现同一目录文件下所有Excel数据文件的合并
- 很特别的动态规划教程
- python--图像轮廓findContours