《第一行代码Android》学习总结第二章 Acitivity的生命周期与启动模式
一、返回栈
Android中使用Task任务来管理活动,一个任务就是一组存放在返回栈中的活动Activity的集合。
系统总是将栈顶的Activity显示给用户。
二、Acitivity的四种状态
1、运行状态
位于返回栈栈顶的活动Activity处于运行状态。
2、暂停状态
活动Activity不在处于栈顶,但仍然可见。不可交互
3、停止状态
活动Activity不在处于栈顶,并且不可见。系统仍然会为该活动Activity保存相应的状态和成员变量。
4、销毁状态
活动Activity从返回栈中移除。
三、Acitivity的生命周期与相关实践
四、设置Acitivity为对话框模式
AndroidMaifest.xml文件中修改标签配置
android:theme=”@style/Theme.AppCompat.Dialog”
五、onSaveInstanceState()回调方法
该方法可以保证在Activity被回收前一定被调用,因此可以运用onSaveInstanceState()回调方法解决活动被回收时数据得不到保存的问题。
1、onSaveInstanceState()回调方法中存在一个Bundle类型参数,可以运用该参数的putString() ,putInt()等方法进行数据保存。
2、在Activity中的onCreate()方法中存在一个Bundle savedInstanceState参数,一般情况下为null,但如果Acitivity在回收前运用onSaveInstanceState()回调方法保存了数据,则该参数会携带之前保存的所有数据。
六、Bundle与Intent绑定
Intent可以与Bundle一起绑定进行数据传输。
七、Acitivity的四种启动模式
可通过AndroidMaifest.xml文件中修改标签配置android:launchMode属性改变启动模式。
1、stardard(默认)
2、singleTop
3、singleTask
4、singleInstance
八、Acitivity使用实践技巧
1、如何根据当前界面判断是哪个Acitivity
1)新建BaseActivity类(不用在AndroidMaifest.xml中注册)继承自AppCompatActivity,并重写onCreate()方法。
2)onCreate()方法中加入
Log.d(“BaseActivity”,getClass().getSimpleName());
3)让其他Activity继承自BaseActivity成为所有Activity的父类。
2、从任意Acitivity退出程序
运用专门一个集合类对所有活动进行管理:
1)新建ActivityCollector类作为活动管理器编写addActivity() removeActivity() finishAll()等方法。
2)在BaseActivity类中的onCreate()方法中调用ActivityCollector类的addActivity()方法,表明将正在创建的活动添加到活动管理器中。
并在BaseActivity类中的onDestroy()方法中调用ActivityCollector类的removeActivity()方法,表明将一个马上要销毁的活动从活动管理器中移除。
Android中杀掉进程:
android.os.Process.killProcess(android.os.Process.myPid());
3、更简洁的启动Acitivity编写规范
把启动Activity的逻辑封装到一个方法中,在待启动的Activity中添加一个public static void actionStart(Context context,String data1,String data2)方法完成Intent的构建,数据的传递与活动的启动。
更多相关文章
- 从一道面试题开始说起 枚举、动态代理的原理
- Android开发之旅:环境搭建及HelloWorld (AVD无法启动,出现Starting
- Android(安卓)面试题(有详细答案)
- Android(安卓)Handler消息处理机制详解
- Android(安卓)屏幕适配的几种方法
- 编写高效 Android代码
- Android无缝切换主题,动态换肤
- Android(安卓)属性动画代码分析(基于ObjectAnimator)
- 腾讯Android社招面试源码相关11题+原理详解