笔记一 Android开发艺术探索之Activity的生命周期和启动模式
2018-01-17 22:52
651 查看
(注:听说写博客可以帮助记忆,就试着整理了一下笔记)(注:这是进阶书的笔记,并不适用于初学者入门,抱歉~如果你是已学习过Android开发艺术探索,可以当复习笔记。)
protected void onSaveInstanceState(Bundle savedInstanceState)(注:在意外情况发生后调用) protected void onRestoreInstanceState(Bundle savedInstanceState)(注:在意外情况发生后重新创建Activity在onCreate()后调用)
该属性配置了哪种项目,哪种项目发生时就不会使Activity重新创建,即不会调用onSaveInstanceState和onRestoreInstanceState两方法,而会调用:
public void onConfigurationChanged(Configuration newConfig)这个方法。
项目: 1.standard :标准模式,默认的启动模式。 2.singleTop :栈顶复用模式,如果任务栈的栈顶的Activity就是要新创建的Activity,则复用,不会创建,同时onNewIntent方法会被回调。 3.singleTask :栈内复用模式,如果要创建的Activity(记为A)在任务栈内有实例了,则A上面的Activity全部出栈(销毁,这称为clearTop效果),直到A为栈顶Activity,同时onNewIntent方法会被回调。 4.singleInstance :单实例模式,一个任务栈中就能单独有一个Activity。
2.Intent如果没有category,只要Activity的有一个intent-filter没有设置category的匹配规则,则匹配成功。(实质:没有设置category的匹配规则的intent-filter会默认有一个<category android:name="android.intent.category.DEFAULT"/>)
<category android:name="android.intent.category.LAUNCHER" />
这二者共同作用是用来标明这是一个入口Activity,并且会出现在系统的应用列表中。
(如果发现错误,欢迎提出)
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,并且会出现在系统的应用列表中。
(如果发现错误,欢迎提出)
相关文章推荐
- Android开发艺术探索笔记(一) Activity的生命周期和启动模式(1)
- Android开发艺术探索阅读笔记之一:Activity的生命周期和启动模式
- android开发艺术探索 学习笔记(二) Activity的启动模式
- Android开发艺术探索(一)Activity生命周期和启动模式
- Android开发艺术探索学习笔记1——Avtivity生命周期和启动模式
- Android 艺术开发探索 第一章 Activity 的生命周期和启动模式观后感
- 【Android开发艺术探索读书笔记】 第一章 Activity的生命周期与启动模式
- Android开发艺术探索笔记(2)- Activity的启动模式
- 【读书笔记】【Android 开发艺术探索】第1章 Activity 的生命周期和启动模式
- Android开发艺术探索(研读笔记)——02-Activity的启动模式
- Android开发艺术探索--Activity生命周期和启动模式
- Android开发艺术探索笔记一:Activity的启动模式
- Android开发艺术探索---第一章activity启动模式之自我总结
- Activity在异常情况下的生命周期——Android开发艺术探索笔记
- [Andorid开发艺术探索 读书笔记]Activity的生命周期和启动模式 (一)
- Android开发探索第一章 Activity生命周期及启动模式总结(一)
- Android开发艺术-第一章Activity的生命周期和启动模式
- Android开发艺术探索--第一章Acitivity的生命周期和启动模式
- Android开发笔记----Activity再学习(生命周期、启动模式、intent-filter)
- android开发艺术探索 3 Activity的启动模式