1、Activity 的生命周期全面分析

  1. Activity 的生命周期全面分析:onCreat,onRestart,onStart,onResume,onPause,onStop,onDestroy。
  2. 资源相关的系统配置发生改变导致 Activity 被杀死并重新创建。
  3. 系统配置改变 onSaveInstanceState 在 onStop 之前,onRestoreInstanceState 在 onStart 之后。系统自动保存和恢复 View 的层次结构,如 TextView 保存文本选中状态和文本内容。
  4. 资源内存不足导致低优先级的 Activity 被杀死。
  5. Activity 优先级:前台 Activity-正在和用户交互的 Activity、可见非前台 Activity -如 Activity 弹出对话框、后台 Activity-已经被暂停的 Activity,如执行 onStop。
  6. 常见系统配置 locale、orientation、KeyboardHidden、screenSize。
  7. configChanges 设置 orientation | screenSize 旋转屏幕,Activity 不会重新创建,调用 onConfigurationChanged 方法。

2、Activity 的启动模式

  1. Launchmode:standard(标准模式)、singleTop(栈顶服用模式)、singleTask(栈内服用模式)、singleInstance(单实例模式)
  2. singleTop、singleTask 复用生命周期 onPause->onNewIntent->onResume
  3. 任务栈,TaskAffinity 指定任务栈的名字。
  4. Activity 的 Flags:FLAG_ACTIVITY_NEW_TASK-作用和 singleTask 相同;FLAG_ACTIVITY_SINGLE_TOP-作用和 singleTop 相同;FLAG_ACTIVITY_CLEAR_TOP-同一个任务栈所有位于它上面的 Activity 都要出栈,一般和 FLAG_ACTIVITY_NEW_TASK 配合使用,如果启动的 Activity 实例已存在,系统会调用它的 onNewIntent。如果被启动 Activity 为 standard 模式,那么它和它之上的 Activity 都要出栈,系统会创建新的实例并放入栈顶,singleTask 启动模式默认就具有此标记为的效果。FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS-具有此标记的 Activity 不会出现在历史 Activity 的列表中。和 Activity 的属性 android:excludeFromRecents=”true” 一样。

3、IntentFilter 的匹配规则

  1. action 的匹配规则:Intent 中的 action 存在且必须和过滤规则中的其中一个 action 匹配。
  2. category 的匹配规则:Intent 如果含有 category,那么所有的 category 都必须和过滤规则中的其中一个 category 相同。
  3. activity 能够接收隐式调用,必须在 intent-filter 中指定 “android.intent.category.DEFAULT” 这个 category。startActivity / startActivityForResult 的时候默认会为 Intent 加上这个 category。
  4. data 的匹配规则:和 action 的匹配规则类似,如果过滤规则中定义了 data,那么 Intent 中必须也定义可匹配的 data。
  5. data 由 mimeType 和 URI 组成。mimeType 指媒体类型,如 image、jpeg、audio、video/*等。URL:://:/[||]
  6. Scheme:URI 的模式,如 http、file、content 等,没有指定 scheme 整个 URI 无效。Host:URI 的主机名,如 www.baidu.com 等,没有指定 scheme 整个 URI 无效。Port:URI 的端口号,如 80 等,仅当指定了 scheme 和 host 参数的时候 port 才有意义。Path、pathPattern、pathRrefix:表述路径信息,path 表示完整的路径信息;pathPattern 也表示完整的路径信息,但是里面可以包含通配符 “” ,“” 表示 0 个或者多个任意字符,想表示真正的字符串 “” 要写成 “\”,“\” 要写出 “\\”;pathPrefix 表示路径的前缀信息。
  7. URI 的默认值为 content 或者 file。
  8. 隐式启动 Activity 可以通过 PackageManager 的 resolveActivity 方法或者 Intent 的 resolveActivity 方法返回最佳匹配,找不到返回 null。PackageManager 的queryIntentActivitys 方法返回所有成功匹配的 Activity 信息。
                <data                    android:scheme="scheme"                    android:host="host"                    android:port="80"                    android:path="/path"                    android:pathPrefix="/pathPrefix"                    android:mimeType="mimetype"/>

更多相关文章

  1. No.11 使用firewall配置的防火墙策略的生效模式
  2. AndroidStudio离线使用gradle
  3. Android之装饰者模式
  4. Android(安卓)Studio去除标题栏
  5. Android(安卓)Material Design控件学习(一)——TabLayout的用法
  6. Android(安卓)studio下搭建svn
  7. Android调用系统内部的下载程序下载文件(二)
  8. delphi xe5 android sample
  9. NDK 环境配置 (Ubuntu)

随机推荐

  1. Android常见错误处理(三)
  2. Android滑动冲突解决方法
  3. android panic堆栈分析工具panic.py
  4. android 由entity创建创建表的sql语句
  5. android 文件存储
  6. C#开发android之alertdialog用法
  7. Android 二级动画弹出菜单
  8. android 添加预装的方法
  9. Android 6.0源码编译环境搭建
  10. Android Studio混淆错误:Missing class: j