Activity暂停时kill进程
来源:互联网 发布:淘宝网首页 编辑:程序博客网 时间:2024/06/02 02:27
之前的博客分析过了,启动一个新的Activity。会把之前的Activity pause。会在ActivityThread中调用AMS的activityPaused函数。下面就是AMS的activityPaused函数。
@Override public final void activityPaused(IBinder token) { final long origId = Binder.clearCallingIdentity(); synchronized(this) { ActivityStack stack = ActivityRecord.getStackLocked(token); if (stack != null) { stack.activityPausedLocked(token, false); } } Binder.restoreCallingIdentity(origId); }
而在AMS的activityPaused函数会调用ActivityStack的activityPausedLocked函数。我们就在这个函数中获取要kill进程的包名,然后调用AMS的forceStopPackage函数来kill 进程。
final void activityPausedLocked(IBinder token, boolean timeout) { if (DEBUG_PAUSE) Slog.v(TAG_PAUSE, "Activity paused: token=" + token + ", timeout=" + timeout); final ActivityRecord r = isInStackLocked(token); if (r != null) { mHandler.removeMessages(PAUSE_TIMEOUT_MSG, r); if (mPausingActivity == r) { if (DEBUG_STATES) Slog.v(TAG_STATES, "Moving to PAUSED: " + r + (timeout ? " (due to timeout)" : " (pause complete)")); String pkgName = r.packageName;//获取包名 mService.forceStopPackage(pkgName, UserHandle.myUserId()); //kill进程 completePauseLocked(true); } else { EventLog.writeEvent(EventLogTags.AM_FAILED_TO_PAUSE, r.userId, System.identityHashCode(r), r.shortComponentName, mPausingActivity != null ? mPausingActivity.shortComponentName : "(none)"); if (r.finishing && r.state == ActivityState.PAUSING) { if (DEBUG_PAUSE) Slog.v(TAG, "Executing finish of failed to pause activity: " + r); finishCurrentActivityLocked(r, FINISH_AFTER_VISIBLE, false); } } }
阅读全文
1 0
- Activity暂停时kill进程
- Android 应用 横竖屏切换时Activity 被销毁 进程被kill 掉
- 进程暂停
- kill 进程
- KILL进程
- kill 进程
- 进程 kill
- 关于Activity被kill时保存数据
- 内存不足时Android 系统怎么Kill进程
- 暂停和继续Activity
- activity 暂停与恢复
- 暂停和恢复Activity
- android N进程启动流程(二)(上一个activity的暂停、进程启动、绑定进程与创建application)
- sleep:暂停进程
- LINUX 暂停、继续进程
- 暂停自己的进程
- 暂停和恢复进程
- app被kill再次启动时系统会恢复被kill时的activity
- [机器学习]基于 JavaScript 的机器学习实例
- 1分2分5分的硬币,组成1角,共有多少种组合。
- Android Studio远程依赖问题
- unity2017官方案例 SpaceShooter 浅析学习
- Linux 安装nginx 1.8.1 及配置
- Activity暂停时kill进程
- 数据结构之看了也不会懂的>>线段树<<
- 使用IntelliJ IDEA开发SpringMVC网站(一)开发环境
- maven打包包含依赖jar Exception in thread "main" org.springframework.beans.fa
- 一个简单的camera管理类
- Linux常用的基础命令大全
- 面试题19:二叉树的镜像
- socket C/C++编程(6)server之accept()函数创建新socket以单独读取缓存区某个client的连接信息(客户端的IP和端口,但是,不包括client端键入的数据)
- 个人笔记_FLASH性质存储器SST25VF016B在STM32F1微控下的操作总结