android开发读书笔记,Android开发艺术探索读书笔记(一)

第1章 Activity 的生命周期和启动模式

生命周期

普通生命周期

Android生命周期

1.第一次启动:onCreate -> onStart -> onResume

2.切换:onPause -> onStop

若新Activity采用透明主题,则当前Activity不会回调onStop

3.再次切回:onRestart -> onStart -> onResume

4.back:onPause -> onStop -> onDestory

差异:

onCreate和onDestory只有一次调用

onStart时Activity在后台

onResume时Activity在前台

Activity A 跳转到 Activity B

A onPause -> B onCreate -> B onStart -> B onResume -> A onStop

异常情况下的生命周期

1.资源相关的系统配置发生改变导致Activity被杀死并重建

销毁时:在onDestory之前调用onSaveInstanceState

重建时:在onStart之后调用onRestoreInstanceState,并会给此方法和onCreate传递Bundle

此过程系统会自动为我们保存和恢复一些数据,如文本框中的数据,List滚动的位置

每一个View都有onSaveInstanceState和onRestoreInstanceState方法

Activity保存数据 -> 委托Window保存数据 -> 委托顶级容器保存数据

系统只在Activity异常终止的时候才会调用onSaveInstanceState和onRestoreInstanceState来保存和恢复数据

2.资源内存不足导致低优先级的Activity被杀死

若不想在系统配置发生改变时重建Activity,可以给configChanges添加值

如:

android:configChanges="orientation"

Activity 的启动模式

Activity 的 LaunchMode

1.standrand

标准模式

此模式启动的Activity默认会进入启动它的Activity所属的任务栈中

2.singleTop

栈顶复用模式

onNewIntent方法会被回调

3.singleTask

栈内复用模式

onNewIntent方法会被回调

结合TaskAffinity,可以指定运行的任务栈

4.singleInstance

单实例模式

只能独立的存在一个任务栈中

Tips:任务栈分为前台任务栈和后台任务栈

Activity 的 Flags

Activity的Flags主要包含有:FLAG_ACTIVITY_NEW_TASK、FLAG_ACTIVITY_CLEAR_TOP、 FLAG_ACTIVITY_SINGLE_TOP、FLAG_ACITIVTY_EXCLUDE_FROM_RECENTS:具有这个标记的Activity不会出现在历史Activity列表中,当某些情况下我们不希望用户通过历史列表回到我们的Activity的时候这个标记比较有用,它等同于属性设置android:excludeFromRecents="true"

IntentFilter的匹配规则

1.IntentFilter中的过滤信息由action、category、data,为了匹配过滤列表,需要同时匹配过滤列表中的actiion、category、data信息,否则匹配失败。一个过滤列表中的action、category、data可以有多个,所有的action、category、data分别构成不同类别,同一类别的信息共同约束当前类别的匹配过程。只有一个Inten同时匹配action类别、category类别和data类别才算完全匹配,只有完全匹配才能成功启动目标Activity。此外,一个Activity中可以有多个intent-filter,一个Intent只要能匹配任何一组intent-filter即可成功启动对应的Activity。

2.action匹配规则:只要Intent中的action能够和过滤规则中的任何一个action相同即可匹配成功,action匹配区分大小写。

3.category匹配规则:Intent中如果有category那么所有的category都必须和过滤规则中的其中一个category相同,如果没有category的话那么就是默认的category,即android.intent.category.DEFAULT,所以为了Activity能够接受隐式低啊用,配置多个category的时候必须加上默认的category。

4.data匹配规则:data的结构很复杂,语法大致如下

android:host="string"

android:port="string"

android:path="string"

android:pathPattern="string"

android:pathPrefix="string"

android:mimeType="string"/>

data由mimeType和URI组成

你可能感兴趣的:(android开发读书笔记)