给学android的同学们的一些建议【III】
如有想学好android的可以加我QQ77993937 --详解Android的Activity组件(上) 在上两篇幅中,对要学android的同学做了一些Java基础说明的铺垫,以及一些基础行业概念的铺垫,今天这篇想和大家探讨和分享下关于学习android知识体系的一些建议。其实学习android和学习其他编程语言是无异的。这一篇幅中,我们来详解一下一开始就会接触的一个控件Activity。先分下面三个部分来述说:
当一个Activity实例被Create、Destory或者Start另外一个Activity时,其将在这四种状态之间进行转换,这种转换的发生根据用户的程序操作。下图说明了Activity在不同状态间转换的具体情形: 如上所示,Android程序员可以决定一个Activity的“生”,但不能决定它的“死”,也就时说程序员可以启动一个Activity,但是却不能手动的“结束”一个Activity。即使你调用Activity.finish()方法时,结果和用户按下BACK键一样:告诉ActivityManager该Activity实例完成了相应的工作,可以被“回收”。其实这一点,学过Java的同学其实都可以发现,其回收机制和JVM的很类似的。【PS:也难怪现在每年Oracle公司总是要来一次起诉下Google了】。随后ActivityManager激活处于栈第二层的Activity并重新入栈,同时原Activity被压入到栈的第二层,从Active状态转到Paused状态。例如:从ActivityA中启动了ActivityB,则当前处于栈顶端的是Activity2,第二层是ActivityA,当我们调用ActivityB.finish()方法时,ActivityManager重新激活ActivityA并入栈,ActivityB从Active状态转换Stoped状态,ActivityA.onActivityResult(intrequestCode,intresultCode,Intentdata)方法被执行,ActivityB返回的数据通过data参数返回给ActivityA。 第二部分:关于Activity的内存栈的概念 如上所示,除了最顶层的Activity外,其它的Activity都有可能在系统内存不足时被回收,一个Activity的实例越是处在栈的底层,它被系统回收的可能性越大。系统负责管理栈中Activity的实例,它根据Activity所处的状态来改变其在栈中的位置。其实在特别的时候,也有可能最顶层的Activity一样可能被干掉,根据操作系统的情况而言。所以大家也要知道,为什么我们在写Activity的时候,要注意实时记得保存下状态数据,因为Activity被干掉不是由我们来控制的。 publicclassOurActivityextendsActivity{ 这些方法的说明如下:
if(savedInstanceState!=null){
此外,Android还定义了一些不常用的与生命周期相关的方法可用: protectedvoidonPostCreate(BundlesavedInstanceState); Android提供的文档详细的说明了它们的调用规则。所以我们需要还要掌握一项技能:认真阅读并能读懂API文档。 |
更多相关文章
- Android(安卓)应用性能调试
- activity中onSaveInstanceState方法调用时机详解
- androidTV 9.0 开发调用系统jar异常报错,jar引用已导入还是报错,分
- Activity启动过程分析
- android UI线程安全问题
- Android(安卓)EditText默认不弹出输入法的实现方法
- Android(安卓)SharedPreferences 实现原理
- 浅谈Java中Collections.sort对List排序的两种方法
- Python list sort方法的具体使用