Android四大组件初识之Activity

一、Activity的生命周期

Activity生命周期是一系列方法调用。熟悉各个方法调用时间,我们在创建activity就能根据具体实现选择合适的方法覆盖。

1、  覆盖Activity的生命周期方法

常用的生命周期有 onCreate、onStart、onResume、onPostResume、onPause、onStop、onDestroy.

为了观察调用过程,把上述方法覆盖,在里面使用日志工具输出方法名。

2、  结果分析

activity被创建调用的方法。onStart调用完后界面显示。所以加载界面应该在onResume之前。

 Android四大组件初识之Activity

activity不可见调用的方法。不可见的情况包括界面切换、锁屏、有电话进来。不包括下滑或上滑显示的通知栏界面。

 Android四大组件初识之Activity

Android四大组件初识之Activity

activity再次可见调用的方法。

 Android四大组件初识之Activity

activity销毁,在不可见的基础上多了OnDestroy的调用。

 Android四大组件初识之Activity

3、  其他情况

#所有的方法调用在同一个线程(UI线程)里面,所以某个方法长时间执行可能导致生命周期不成立,整个生命周期是事件处理,前面的事还没处理完,后面自然就不会处理。

#方法调用有缓存,一个操作第二次执行,若数据没改变,将直接使用第一次的结果。

二、Activity的跳转

Activity之间的跳转切换通过intent,在intent中设置了目标Activity就是显示。对应的隐式跳转是在intent中设置匹配参数,系统用参数与众多Activity匹配,然后决定跳转到某个界面。根据是否带有返回结果又分普通的和有返回结果的跳转。

1、  直接的界面跳转

在当前Activity(MainActivity)之中用Intent设置目标Activity(ScStandardActivity),可以用Intent传递少量的数据。调用startActivity。

 Android四大组件初识之Activity

在目标Activity通过getIntent获得intent,得到传入的数据。

 Android四大组件初识之Activity

2、  带有返回结果的跳转

这种方式跟普通调用的区别是目标Activity可以调用setResult方法回传一个携带数据的intent。原来的Activity可以在onActivityResult中得到该intent。

调用带返回结果的目标Activity。用startActivityForResult

 Android四大组件初识之Activity

目标Activity用setResult返回一个intent

 Android四大组件初识之Activity

处理返回结果。通过调用时设置的requestCode和返回设置的resultCode唯一确定一个调用关系。

Android四大组件初识之Activity

3、  Intent隐式跳转

通过intent设置activity的配置参数,然后系统根据这些参数进行匹配,最后决定跳转到一个Activity。一个Activity的配置参数是通过清单文件intent-filter标签注册的。包括action、data、category等。系统匹配时先查看当前应用清单中有无匹配结果,然后才与系统注册的所有activity匹配,这时若有多个匹配结果就让用户去选择。

本例中一个activity的intent-filter配置

 Android四大组件初识之Activity

调用方式跟普通的一样

 Android四大组件初识之Activity

 

用例演示

Android四大组件初识之Activity

三、Activity的启动模式

启动模式是对Activity创建的设置,是否要复用?是否新开任务栈?合理使用启动模式可以让程序运行更加流畅。消耗更少的资源。

1、  启动模式的设置

可以在清单文件中设置

 Android四大组件初识之Activity

也可以程序中通过Intent的addFlags设置。

 Android四大组件初识之Activity

2、  Standard模式

普通的创建方式,每次生成一个实例加入当前任务栈。不复用也不新开一个任务栈。

3、  SingleTop模式

栈顶复用,如果要创建的activity在栈顶,就直接复用。复用时只调用activity的onNewIntent并传入intent。

4、  singleTask模式

栈内复用,如果要创建的activity在当前任务栈中存在,就把他上面所有的activity出栈。调用onNewIntent。

5、  singleInstance模式

该模式只能在清单文件中设置,创建时新开一个任务栈,每次都复用一个activity。复用时调用onNewIntent。

 

Android四大组件初识之Activity

上一篇:Android中如何动态添加碎片


下一篇:黑苹果是否会成为mac电脑的竞争对手?