android四大组件笔记之Activity(一)
2017-06-15 17:08
417 查看
安卓的开发主要是围绕activity、broadcastReceiver、service、ContentProvider四大组件和基于view的子类组成,其中activity、broadcastReceiver、service都是通过它们的桥梁Intent创建和传递消息。通过Handler来执行消息、线程通讯的操作。而关于IPC,我觉得不得不说的就是binder。咱们这篇的主角是android的四大天王之一Activity。
在这我区分一下activity、window和view。
window相当于显示屏,通过LayoutInflater.inflate()加载view,通过addView加载到window上显示。
view(或viewgroup)是我们控件的基类。
activity相当于window的控制类,它可以通过phoneWindow的setContentView创建一个window。
standard属于默认设置 ,启动一个activity会生成新的activity
singletop
如果该activity已经启动过了,且正好位于栈顶,那么并不会为程序生成一个新的activity,而是直接使用栈顶的activity,至有满足上述两个条件(已经启动过和位于栈顶)才会这样,否则也会生成一个新的activity。
singletask
该模式下,只会创建该activity一个实例,在此模式下启动activity ,如果栈中已经有了该activity,那么直接使用。(而如果它不是位于栈顶,那么位于它上面的activity实例要依次出栈)
singleInstance
该模式下,将会创建一个task,且在该task下生成要启动的activity实例。该task下只会生成一个activity实例,且不会重复被实例化。后续的请求都不会创建该实例,除非这个任务栈被销毁了。
这是我用渣渣像素丛书上照下来的。
基本情况
启动Activity:系统会先调用onCreate方法,然后调用onResume,activity进入运行状态。
当activity被其他activity覆盖其上或锁屏:系统会调用onPause方法,暂定当前activity的运行。
当前Activity由被覆盖状态回到前台或解锁,系统会调用onResume方法,再次进入运行状态。
当前activity转到新的activity界面或者按Home键回到主屏,自身退居后台:系统会先调用onPause方法,然后调用onStop方法,进入停滞状态。
用户回到此activity:系统先调用onStart方法,然后调用onStart方法,最后调用onResume方法,再次进入运行状态。
用户退出当前activity:系统先调用onPause方法,然后迪奥用onStop,最后调用OnDestroy
通过activity的生命周期中的onPause和onResume方法;在pause的时候保存信息,在resume时恢复信息。值得注意的是,onResume和onPause不能做太耗时的工作。
Intent中的actionability必须能够和过滤规则中的action匹配。这里说的匹配是指action的字符串值完全相同,并且区分大小写,一个过滤规则可以有多个action,只要其中一个匹配成功就OK。但只要过滤规则中有action,Intent中必须有其中一个action和 过滤规则中其中一个相同才可以匹配成功。
category的匹配规则
Intent中如果有category,那么所有的category都必须和过滤中的其中一个category相同。换句话说,Intent中如果出现了擦特工容易,不管有几个category,他都必须是过滤规则中定义了的。当然,如果Intent中没有定义,也可以匹配成功。
data的匹配规则
匹配规则和action类似,如果过滤规则中定义了data,那么intent中必须也要定义可匹配的data。因为data的结构比较复杂,建议自行去查阅一下相关资料,学习一下。
Activity
是什么(what)?
activity是最基本也是最常见的android组件之一,负责与用户交互,一个activity通常就是一个屏幕。在这我区分一下activity、window和view。
window相当于显示屏,通过LayoutInflater.inflate()加载view,通过addView加载到window上显示。
view(或viewgroup)是我们控件的基类。
activity相当于window的控制类,它可以通过phoneWindow的setContentView创建一个window。
启动模式(launchmode)
standardstandard属于默认设置 ,启动一个activity会生成新的activity
singletop
如果该activity已经启动过了,且正好位于栈顶,那么并不会为程序生成一个新的activity,而是直接使用栈顶的activity,至有满足上述两个条件(已经启动过和位于栈顶)才会这样,否则也会生成一个新的activity。
singletask
该模式下,只会创建该activity一个实例,在此模式下启动activity ,如果栈中已经有了该activity,那么直接使用。(而如果它不是位于栈顶,那么位于它上面的activity实例要依次出栈)
singleInstance
该模式下,将会创建一个task,且在该task下生成要启动的activity实例。该task下只会生成一个activity实例,且不会重复被实例化。后续的请求都不会创建该实例,除非这个任务栈被销毁了。
生命周期
流程图这是我用渣渣像素丛书上照下来的。
基本情况
启动Activity:系统会先调用onCreate方法,然后调用onResume,activity进入运行状态。
当activity被其他activity覆盖其上或锁屏:系统会调用onPause方法,暂定当前activity的运行。
当前Activity由被覆盖状态回到前台或解锁,系统会调用onResume方法,再次进入运行状态。
当前activity转到新的activity界面或者按Home键回到主屏,自身退居后台:系统会先调用onPause方法,然后调用onStop方法,进入停滞状态。
用户回到此activity:系统先调用onStart方法,然后调用onStart方法,最后调用onResume方法,再次进入运行状态。
用户退出当前activity:系统先调用onPause方法,然后迪奥用onStop,最后调用OnDestroy
activity的状态保存
通过onRestoreINstanceState(Bundle)方法对信息进行保存,之后在onCreate(Bundle)或者onRestoreInstanceState(Bundle)方法中恢复信息,值得一提的是,onSaveInstanceState(Bundle)只有在该activity所在的进程被系统杀死的时候才会调用,比如说突然来了电话,系统内存不够。通过activity的生命周期中的onPause和onResume方法;在pause的时候保存信息,在resume时恢复信息。值得注意的是,onResume和onPause不能做太耗时的工作。
IntentFilter的匹配规则
action的匹配规则Intent中的actionability必须能够和过滤规则中的action匹配。这里说的匹配是指action的字符串值完全相同,并且区分大小写,一个过滤规则可以有多个action,只要其中一个匹配成功就OK。但只要过滤规则中有action,Intent中必须有其中一个action和 过滤规则中其中一个相同才可以匹配成功。
category的匹配规则
Intent中如果有category,那么所有的category都必须和过滤中的其中一个category相同。换句话说,Intent中如果出现了擦特工容易,不管有几个category,他都必须是过滤规则中定义了的。当然,如果Intent中没有定义,也可以匹配成功。
data的匹配规则
匹配规则和action类似,如果过滤规则中定义了data,那么intent中必须也要定义可匹配的data。因为data的结构比较复杂,建议自行去查阅一下相关资料,学习一下。
相关文章推荐
- 笔记38 | Android四大组件之Activity的四种LauncherMode详解
- Android开发总结笔记 四大组件之Activity(上) 1-2-1
- android四大组件学习笔记--Activity
- 小白android笔记【1】--Android四大组件之一(Activity)
- Android笔记---四大组件之Activity活动详解
- android四大组件之-Activity笔记
- Android开发总结笔记 四大组件之Activity(下) 1-2-3
- 详解 Android 的 Activity 组件——笔记
- 01 Android应用的构成 四大组件 Activity, Intent Receiver , Service , Content Provider
- Android 四大组件学习之Activity生命周期
- Android心得2.4--四大组件之一--Activity
- Android四大组件之Activity(一)
- Android四大组件:Activity、Service、BroadCast Recevicer、Content provider
- Android四大组件之一-----Activity总结
- Android四大组件之一Activity的生命周期<学习笔记>
- Android 四大组件学习之activity的四种加载模式介绍
- Android实训课程之三 这次课老师先是提到了Android有四大组件:Activity、Service、Broadcast Receiver、Content Provider。然后重点提到Acti
- Android的四大组件之三--Activity(4)----->Activity的启动方式和相关参数
- android四大组件之Activity
- Android starting 5---四大组件之一---Activity入门(cont.)