Android基础——Activity相关
来源:互联网 发布:品茗预算软件下载 编辑:程序博客网 时间:2024/06/06 17:35
Activity作为Android中的四大组件之一,而且是我们最常用的,想必所有的Android开发者都不会陌生,无论对其概念还是用法都有一定理解,那我们今天主要讲些什么呢?
今天主要讲两个问题:
1、Activity是如何启动的?
2、两个Activity的切换,其生命周期的变化如何?
第一个问题个人认为有一篇文章写得很详细
【凯子哥带你学Framework】Activity启动过程全解析
大家看懂这篇文章,那么对Android的Activity启动过程肯定非常了解了,其实Activity的启动可简单理解为:
当系统启动一个Activity的时候,首先会发送一个请求,而这个请求会由Instrumentation来处理,然后它通过Binder向ActivityManagerService(AMS)发送请求,而AMS内部维护着一个ActivityStack并负责栈内的Activity的状态同步,AMS通过ActivityThread去同步Activity的状态,从而完成一个Activity的启动。
第二个问题其实在我们了解第一个问题之后就能很容易理解了。
在ActivityStack中的resumeTopActivityInnerLocked方法中有这样一段代码:
boolean dontWaitForPause = (next.info.flags&ActivityInfo.FLAG_RESUME_WHILE_PAUSING) != 0;boolean pausing = mStackSupervisor.pauseBackStacks(uerLeaving,true,dontWaitForPause);if(mResumedActivity != null){ pausing |= statPausingLocked(userLeaving,false,true,dontWaitForPause); if(DEBUG_STATES) Slog.d(TAG,"resumeTopActivityLocked:Pausing" + mResumedActivity);}
从上述代码可以看出,在新的Activity启动之前,栈顶的Activity需要先onPause后,新Activity才能启动。
这样也确实符合官方对onPause 的解释:不能在onPause中做重量级操作,因为必须onPause执行完成后,新的Activity才能onResume。
通过分析这个问题,我们知道如果我们想进行一些耗时操作,需要尽量在onStop中去完成,避免在onPause中,因为这样会影响新的Activity的启动。
- Android基础——Activity相关
- Android——Activity基础
- Android学习笔记--Activity基础相关
- Android面试——Activity相关
- 【Android基础】Activity深入理解(一)——Activity生命周期
- android基础7——Activity
- Android基础——Activity生命周期
- Android基础——Activity的使用
- Android基础——Activity生命周期
- Android应用基础——Activity
- Android基础——Activity生命周期解读
- Android基础学习——Activity生命周期
- Android开发基础第一章——Activity
- Android基础篇——Activity
- Android基础篇——聊聊Activity
- android基础—新建一个Activity
- Android基础—四大组件之Activity
- 【android基础】——Android布局相关
- hibernate常见的面试题及答案
- JavaScript面向对象精要(二)
- 嘿嘿
- Timofey and cubes_Codeforces
- apache启动失败原因
- Android基础——Activity相关
- Fragment
- startService与bindService的区别
- Harris角点检测原理与流程
- JavaScript中的this到底指的是什么!
- OpenCV Resize Reshape
- AlloyTouch之无限循环select插件
- 图片在IE浏览器不显示,在其他浏览器正常
- 戏说从Unigram model 到LDA再到BTM