• 《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来实现的,它一半用在没有明确指出目标组件名称的前提下,一般用于在不同的应用程序之间。

  • 相关阅读:
    PHP 生成二维码底部拼接文字和中间拼接logo
    牛客练习赛85
    Codeforces Round #729 (Div. 2)
    Codeforces Round #727 (Div. 2)
    AtCoder Beginner Contest 206(Sponsored by Panasonic)
    Codeforces Round #726 (Div. 2)
    Codeforces Round #722 (Div. 2)
    Codeforces Round #721 (Div. 2)
    AtCoder Regular Contest 118
    牛客练习赛82
  • 原文地址:https://www.cnblogs.com/anni-qianqian/p/7205895.html
Copyright © 2020-2023  润新知