Activity知识点回顾

来源:互联网 发布:nginx配置php虚拟主机 编辑:程序博客网 时间:2024/05/21 06:42

此系列文章为知识点回顾所用,所以,跟网上的一些内容有重复,不过,这里都只记录要点。—– 安卓知识回顾

Activity生命周期

  1. 完整生命周期见图
    这里写图片描述
  2. 各生命周期有以下特点
    • onCreate-onDestory,分别是创建和销毁,在其中可以做一些初始化及耗时的资源回收等操作。
    • onStart-onStop,分别从是否可见来判断
    • onResum-onPause,分别从是否位于前台来判断,例如app被遮住或者按了home键都会走onPause。
    • onRestart,只有从不可见到可见才会调用,例如Activity被切到后台又唤起的过程:onPause->onStop->onRestart->onStart->onResum.

Activity数据存储和恢复

  1. 异常情况下会需要保存Activity数据,主要有:按了home键,锁屏,屏幕旋转等。
  2. 异常情况生命周期:onSaveInstanceState->onDestory。重建过程生命周期:onCreate->onRestoreInstanceState。
  3. 那我们能够存取些什么类型的数据呢?见下图(基本数据类型,可序列化对象,集合等):
    这里写图片描述
  4. 存储数据我们在onSaveInstanceState中保存,在onCreate或者onRestoreInstanceState中恢复,需要注意的是onCreate中恢复数据需要做判空处理。
  5. 并不是所有的Activity的数据都能恢复,比如说笔者公司的应用只有一个Activity,页面使用xml动态解析生成,这样的化就没办法去做数据的恢复。

Activity启动模式

  1. standrd:每启动一次就创建一个Activity的实例,不管存在与否,使用appliactionContext启动会报错,因为appliactionContext不在默认任务栈中需要,指定FLAG_ACTIVITY_NEW_TASK启动即可;
  2. singleTop:如果该Activity在栈顶存在,那么再次启动直接复用栈顶的实例,不再创建,onNewIntent方法会被调用,onStart和onCreate不会调用。如果不在栈顶,那么会重新产生一个实例;
  3. singleTask:这是一个单实例模式,也就是只要栈中存在该实例就不会重新创建,不论在栈顶还是栈中,如果在栈中时会把其上面的部分实例都出栈,同样会调用onVewIntent方法。
  4. singleInstance:这也是一个单实例模式,只不过与singleTask不同的是,他位于一个单独的任务栈中。
  5. 启动模式可以在清单文件中配置或者启动Activity的时候添加Flags标识。

IntentFilter匹配规则

  1. action,制定了action后,启动时必须匹配才可启动,一个组件可以配置多个action作为多个用途。
  2. category,如果组件中定义了category,必须匹配才可启动,同时必须配置:android.intent.category.DEFAULT,否则找不到该组件。
  3. data,这个未真正用过,只是做匹配用,例子如下

    <activity android:name=".SecondActivity">    <intent-filter>        <action android:name="com.example.second.action"/>        <category android:name="com.example.second.category"/>        <category android:name="android.intent.category.DEFAULT"/>        <data android:mimeType="text/plain" android:scheme="http" />    </intent-filter></activity>启动时如下配置即可启动。Intent intent = new Intent();intent.setAction("com.example.second.action");intent.addCategory("com.example.second.category");intent.setDataAndType(Uri.parse("http://abc"),"text/plain");startActivity(intent);
0 0
原创粉丝点击