笔记一 Android开发艺术探索之Activity的生命周期和启动模式

(注:听说写博客可以帮助记忆,就试着整理了一下笔记)
(注:这是进阶书的笔记,并不适用于初学者入门,抱歉~如果你是已学习过Android开发艺术探索,可以当复习笔记。)


1.Activity的生命周期


一. 生命周期的方法之间的区别:

1. onStart()时,表示Activity已经可见,但还在后台。而onResume()时,表示Activity可见,并且显示到前台。
2. onStart()和onStop()是从Activity是否可见这个角度来回调的,而onResume()和onPause()是从Activity是否位于前台这个角度来回调的。

二. 异常情况下的生命周期:

常见的异常情况有:
1.横屏(landscape)和竖屏(portrait)的切换。
2.按HOME键或启动新Activity。
3.资源内存不足,Activity被杀死。

protected void onSaveInstanceState(Bundle savedInstanceState)
(注:在意外情况发生后调用) 
protected void onRestoreInstanceState(Bundle savedInstanceState)
(注:在意外情况发生后重新创建Activity在onCreate()后调用)

三. Activity的configChanges属性:

(注:在清单文件中配置)
常用的项目:
1.keyboardHidden  :键盘的可访问性发生了改变,比如调出键盘。
2.locale :设备的本地位置发生了改变,比如切换了系统语言。
3.orientation :设备屏幕方向发生了改变。
(注:属性取多个值是,可用”|“连接起来)

该属性配置了哪种项目,哪种项目发生时就不会使Activity重新创建,即不会调用onSaveInstanceState和onRestoreInstanceState两方法,而会调用:
public void onConfigurationChanged(Configuration newConfig)这个方法。

二. Activity的启动模式

一.设置Activity的启动模式的方法:

1. Activity的launchMode属性
(注:在清单文件中配置)
项目:
1.standard :标准模式,默认的启动模式。
2.singleTop :栈顶复用模式,如果任务栈的栈顶的Activity就是要新创建的Activity,则复用,不会创建,同时onNewIntent方法会被回调。
3.singleTask :栈内复用模式,如果要创建的Activity(记为A)在任务栈内有实例了,则A上面的Activity全部出栈(销毁,这称为clearTop效果),直到A为栈顶Activity,同时onNewIntent方法会被回调。
4.singleInstance :单实例模式,一个任务栈中就能单独有一个Activity。
2.通过Intent设置标志位
标志位 :
1.FLAG_ACTIVITY_NEW_TASK :“singleTask模式“
2.FLAG_ACTIVITY_SINGLE_TOP:“singleTop模式”
3.FLAG_ACTIVITY_CLEAR_TOP:“singleTask模式默认就具有此标记位的效果 ”
4.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS:”具有这个标记的Activity不会出现在历史Activity列表里“
用例:
Intent intent = new Intent();
intent.setClass(MainActivity.this,SecondActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);

二.IntentFilter的匹配规则:

(注:一个Activity中可以有多个intent-filter,一个隐式Intent只要能匹配任何一组intent-filter即可成功启动对应的Activity)

1.action的匹配规则

一个 intent-filter可以有多个action,只要Intent全部的action,至少有一个intent-filter有相同对应的全部action,即匹配成功。

2.category的匹配规则

1.Intent如果有category,只要Intent全部的category,至少有一个intent-filter有相同对应的全部category,即匹配成功。

2.Intent如果没有category,只要Activity的有一个intent-filter没有设置category的匹配规则,则匹配成功。(实质:没有设置category的匹配规则的intent-filter会默认有一个<category android:name="android.intent.category.DEFAULT"/>

3.data的匹配规则

data分为mimeType(媒体类型)和URI两部分。
data的匹配规则和action类似。

4.主Activity的intent-filter

<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
这二者共同作用是用来标明这是一个入口Activity,并且会出现在系统的应用列表中。

(如果发现错误,欢迎提出)








  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值