您的位置:首页 > 移动开发 > Android开发

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

2018-01-17 22:52 651 查看
(注:听说写博客可以帮助记忆,就试着整理了一下笔记)(注:这是进阶书的笔记,并不适用于初学者入门,抱歉~如果你是已学习过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,并且会出现在系统的应用列表中。
(如果发现错误,欢迎提出)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐