《第一行代码Android》学习总结第二章 Acitivity的生命周期与启动模式

本文总结了《第一行代码Android》第二章的内容,详细介绍了Android中的返回栈概念、Activity的四种状态(运行、暂停、停止、销毁),探讨了Activity的生命周期及其实践,讲解了如何设置Activity为对话框模式,利用onSaveInstanceState()保存数据,以及Intent与Bundle的数据传输。此外,还阐述了Activity的四种启动模式(标准、单顶、单任务、单例)和一些实用技巧,如判断当前界面Activity、退出程序的方法和更简洁的启动Activity规范。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、返回栈

    Android中使用Task任务来管理活动,一个任务就是一组存放在返回栈中的活动Activity的集合。

    系统总是将栈顶的Activity显示给用户。

二、Acitivity的四种状态

1、运行状态

    位于返回栈栈顶的活动Activity处于运行状态。

2、暂停状态

    活动Activity不在处于栈顶,但仍然可见。不可交互

3、停止状态

    活动Activity不在处于栈顶,并且不可见。系统仍然会为该活动Activity保存相应的状态和成员变量。

4、销毁状态

    活动Activity从返回栈中移除。

三、Acitivity的生命周期与相关实践

  •  

四、设置Acitivity为对话框模式

AndroidMaifest.xml文件中修改<acitivity>标签配置

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文件中修改<acitivity>标签配置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的构建,数据的传递与活动的启动。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值