有关Android活动——写给自己看

来源:互联网 发布:天刀捏详细步骤脸数据 编辑:程序博客网 时间:2024/06/06 15:36

一.活动的4种启动模式

 Android是使用返回栈来管理活动的,每个应用程序都会有自己的返回栈。且 Android活动共有4种启动模式,在AndroidManifest.xml文件中通过给<activity>标签指定android:launchMode属性来选择启动模式,下面列出4种模式:

1.standard模式:standard是活动默认的启动模式,对于使用standard模式的活动,系统不会在乎这个活动是否已经存在返回栈中,每次启动都会创建该活动的一个实例。

2.singleTop模式:当活动的启动模式指定为singleTop时,在启动活动时如果发现返回栈的栈顶已经是该活动,则认为可以直接使用它,不会再创建一个新的活动实例,若该活动不在栈顶,则再次创建一个新的活动实例。

3.singleTask模式:当活动的启动模式指定为singleTask时,在启动活动时系统会首先检查返回栈中是否存在该活动实例,若存在,则使用该活动实例并将在这个活动之上的其余活动统统出栈,否则,创建一个新的活动实例。

4.singleInstance模式:当活动的启动模式指定为singleInstance时,会有一个单独的返回栈来管理这个活动,不管是哪个应用程序访问这个活动,都使用同一个返回栈。解决共享活动实例问题。

二.对活动进行管理

1.知晓当前是在哪一个活动:

可通过新建一个BaseActivity类,让其继承自AppCompatActivity类,并重写onCreate()方法,使用getClass().getSimpleName()方法来获取当前实例的类名。

2.增加一键退出功能:

通过用一个专门的集合类来对所有的活动进行管理即可。新建一个ActivityCollector类作为活动管理器,:

public static List<Activity> activities = new ArrayList<>();

在活动管理器中通过一个List来暂存活动。再提供一个addActivity(Activity activity)和remove(Activity activity)方法分别用于向List中添加和移除一个活动。最后提供一个finishAll()方法用于将List中存储的活动全部销毁,代码如下:

public static void finishAll(){

for(Activity activity:activities){

if(!activity.isFinishing()){

activity.finish();

}

}

}

在onCreate()方法中调用addActivity()方法,将正在创建的活动添加进活动管理器中,在onDestory()方法中调用removeActivity()方法,将一个马上要销毁的活动移除出活动管理器。当想退出程序时,调用finishAll()方法即可。

3.活动启动的最佳写法:

在活动中添加一个actionStart(Context context,需要传进的此活动的数据类型 xx)方法。在此方法中完成Intent的构建,并用intent.putExtra()方法获取上一个活动传送过来的数据,在用context.startActivity()方法启动本活动。

这样,即使不阅读此活动的代码,也可以非常清晰的知道启动本活动需要传递哪些数据。


0 0
原创粉丝点击