Android学习之路---Activity四种启动模式

    xiaoxiao2026-09-24  18

      首先解释下任务栈:   每个应用都有一个任务栈,是用来存放Activity的,功能类似于函数调用的栈,先后顺序代表了Activity的出现顺序;比如Activity1–>Activity2–>Activity3,则任务栈为:    一、standard启动模式:   该启动模式是默认的启动模式,在每次启动一个Activity时会新创建一个Activity对象,无论要启动的Activity是否存在。如图:    二、singleTop启动模式:   在当前任务栈中,判断栈顶是否存在当前的Activity,如果是,就直接使用,如果不是,再创建新的Activity放入栈顶。如图:    三、singleTask启动模式:    在当前任务栈中,判断栈顶是否存在该Activity,如果不存在,则创建一个新的Activity入栈, 如果存在会把该Activity之上的所有Activity清除出栈,显示当前Activity。如图:    四、singleInstance启动模式:   新创建一个任务栈,放入新创建的Activity,该任务栈只允许存在同一个Activity实例,如果已存在需要的Actiity,那么会切换到存在该Activity的任务栈。如图:   

      下面说下设置启动模式的方法:   1.在AndroidManifest.xml文件中设置,在所需要启动的Activity中设置:launchMode,有四种,上文已述。

    <activity android:name=".MainActivity6" android:label="@string/title_activity_main6" android:launchMode="standard"> </activity>

      2.在代码中设置:下示代码是一个按钮的事件方法,利用Intent对象的setFlags()方法来传递参数从而设置启动模式

    public void startFlags(View view) { Intent intent = new Intent(this, MainActivity6.class); //设置Activity的启动模式 //Intent.FLAG_ACTIVITY_NEW_TASK在新的任务栈中启动Activity,如果有,在本任务中启动。类似于standard模式 //Intent.FLAG_ACTIVITY_CLEAR_TASK;类似于singleTask启动模式 //Intent.FLAG_ACTIVITY_CLEAR_TOP;类似于singTop启动模式 intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent); }

      最后说明,图例全部借用自meizixiong的博客。   小白之论,大神勿喷。   PS:哪个大神解释下singleInstance模式到底如何启动,网上的说法不一,在此拜谢~      

    转载请注明原文地址: https://ju.6miu.com/read-1312284.html
    最新回复(0)