Android读书笔记-1
2016-04-04 本文已影响78人
人失格
Activity的生命周期
- onCreate: 表示Activity的正在被创建 ,在这个方法,我们通常会做一些初始化动作,比如调用SetContentView去加载视图布局资源,初始化Activity所需要的数据
- OnRestart:表示Activity正在重新启动,从不可见变为可见状态。一般是用户切换到桌面或者用户重新打开了一个新的Activity。此时Acticity变成了不可见 onPause onStop 当用户从新回来则会回到这个Activity 调用Activity的onRestart方法
- onPause: 这个方法比较特别,因为它涉及到新的Activity的显示,新的Activity中的onResume方法, 所以一般耗时的操作一般方法放到onstop方法。
- onResume: acitivity此时已经activity已经可见 并且处于前台。
- onDestory: 表示activity已经销毁了
- onStop: acitivity 可以做一些重量级的回收工作,但是同时不要太耗时。
注意点:onStart onStop 在于activity是否可见来判断 onResume onPause 在于activity是否在前台来判断。
Activity的生命周期异常情况的生命周期
- 当系统因为配置发生了改变,Activity会被销毁, 系统会调用onSaveInstanceState来保存当前的状态,当activity重新创建, 回报之前销毁的Bundle作为参数传递给onRestoreInstanceState和onCreate方法 ,所以我们可以通过onRestoreInstanceState和onCreate来判断activity是否重建,在时序上onRestoreInstanceState是在onStart方法后边。但是Oncreate方法如果在正常启动里面的参数将会为Null,而onRestoreInstanceState 里面的参数一定不会为空。
- 当我们不需要系统重新创建Activity,我们可以制定configChanges属性,通常的配置为android:configChanges = "orientation|keyboardHidden|locale " 这是系统调用的onConfigurationChanged方法,我们可以在这个方法来做一些自己的特殊处理。
任务栈
TaskAffinity这个参数表示了Activity所需要的任务栈的名字,这个属性值必须不能和包名相同,否则相当于没有制定。 主要是和singleTask属性或者allowTaskReparenting属性配对使用 ,任务分为前台任务栈和后台任务栈,后台任务栈中的activity位于暂停状态 。
- 和singleTask 用来制定目前的activity的任务栈的名字。
- 当allowTaskReparenting 为true的时候,当一个应用A启动了应用B的某个Activity后,此Activity会直接从应用A的任务栈转移到应用B的任务栈中。
两种启动模式:
- 通过AndroidMenifest: 制定Activity启动模式:android:launchMode ="singleTask".
- 通过Intent 设置标志位为Activity制定启动模式:
Intent intent = new Intent();
intent.setClass(...this,...class);
intent.addFlag(Intent.Flag_ACTIVITY_NEW_TASK)
startActivity(intent);
常用activity的Flags:
- FLAG_ACTIVITY_NEW_TASK
- FLAG_ACTIVITY_SINGLE_TOP
- FLAG_ACTIVITY_CLEAR_TOP
IntentFilter的匹配规则
IntentFilter中的过滤信息有action,category,data,只有一个Intent完全匹配这三项才算完全匹配。
- action是一个字符串 ,系统定义了一些action,同时我们可以自己定义自己的。action本身就是表示动作的意思,一个过滤规则可以有多个IntentFilter,但是只要匹配一个成功就可以
- category 同样是一个字符串 ,系统定义了一些 ,我们也可以自定义一些
和action不同的是 所有的category都必须和过滤规则的其中一个相同,平时我们开发也可以不设定 "android:intent.category.DEFAULT" - data 和action类似, 如果过滤规则中定义了data。data又两部分组成,mimeType和URI组成 ,mimeType指的媒体类型 比如image/jpeg audio/mpeg4-generic vidoe/* ,可以表示图片 文本 视频。
<data android:scheme = "string"
android:host = "string"
android:port="string"
android:path ="string"
android:pathPattern = "string"
android:pathPrefix = "string"
android:mimeType = "string"/> - android:scheme URI的模式 比如http,file,content 如果没有指定 URI则无效
- android:Host 主机名 www.baidu.com ,如果没有指定URI则无效
- android:Port: 端口
- path pathPattern pathPrefix path表示的完整路径 pathPattern 也是表示完整路径 可以包括通配符