《android开发艺术探索》读书笔记(一)--Activity的生命周期和启动模式

No1:

如果新Activity采用了透明主题,那么当前Activity不会回调onStop;

No2:

新Activity启动之前,栈顶的Activity需要先onPause后,新Activity才能启动。

No3:

onPause和onStop都不能执行耗时的操作。

No4:

Activity在异常情况下终止的话,系统会调用onSaveInstanceState来保存当前Activity的状态,这个方法在onStop之前,和onPause没有既定的时序关系。当Activity重新创建后,系统会调用onRestoreInstanceState,并且把Activity销毁时onSaveInstanceState方法所保存的Bundle对象作为参数同时传递给onRestoreInstanceState和onCreate方法,onRestoreInstanceState发生在onStart之后。

No5:

每个View都有onSaveInstanceState和onRestoreInstanceState这两个方法,不同的具体实现,能够自动为每个View恢复不同的数据。

No6:

onRestoreInstanceState和onCreate有一点不同:onRestoreInstanceState其参数Bundle savedInstanceState一定是有值的,onCreate的参数Bundle savedInstanceState为null

No7:

Activity优先级

1)前台Activity--正在和用户交互的Activity

2)可见但非前台Activity

3)后台Activity--已经被暂停的Activity

当系统内存不足时,系统就会按照上述优先级去杀死目标Activity所在进程,并在后续通过onSaveInstanceState和onRestoreInstanceState来存储和恢复数据

No8:

如果不想让Activity在屏幕旋转的时候重新创建,就可以给configChanges属性添加orientation这个值。并且没有调用onSaveInstanceState和onRestoreInstanceState来存储和恢复数据,取而代之的是系统调用了Activity的onConfigurationChanged方法。

No9:

No10:

当我们用ApplicationContext去启动standard模式的Activity的时候会报错,错误如下

这是因为非Activity类型的Context(如ApplicationContext)并没有所谓的任务栈。解决方案是指定singleTask启动模式

No11:

singleTop和singleTask,如果要调用的Activity已经存在,将会调用它的onNewIntent方法。

No12:

静态设置无法为Activity设定FLAP_ACTIVITY_CLEAR_TOP标识,动态设置无法为Activity设定singleInstance模式

No13:

如果Intent既有显示调用又有隐式调用,以显示调用为主

No14:

IntentFilter中的过滤信息有action、category、data。一个Activity中可以有多个intent-filter,一个Intent只要能匹配任何一组intent-filter即可成功启动对应的Activity。

data由两部分组成,mimeType和URI。mineType指媒体类型(图片、文本、视频等)。

URI结构如下:

<scheme>://<host>:<port>/[path]|<pathPrefix>|<pathPattern>
例如:
http://www.baidu.com:80/search/info

No15:

应用场景

显式Intent :通过指定Intent组件名称来实现的,一般用在知道目标组件名称的前提下,一般是相同的应用程序内部实现的。

隐式Intent: 通过Intent Filter来实现的,它一半用在没有明确指出目标组件名称的前提下,一般用于在不同的应用程序之间。

posted @ 2017-07-19 17:59  嘉禾世兴  阅读(333)  评论(0编辑  收藏  举报