前面的文章介绍了Android 活动Activity的启动模式:standard和singleTop。本文继续介绍Activity的下一个启动模式:singleTask。

singleTask:当设置活动的启动模式为singleTask时,首先检查返回栈中是否存在当前活动,如果存在当前活动的实例,则直接使用当前实例,并把当前活动之上的所有活动 pop出栈,即当前活动位于栈顶位置。

代码实例如下:

(1)修改AndroidManifest.xml

修改活动MainActivity的启动模式为singleTask,如下:

  <activity            android:name=".MainActivity"            android:launchMode="singleTask"            android:label="@string/app_name" >            <intent-filter>                <action android:name="android.intent.action.MAIN" />                <category android:name="android.intent.category.LAUNCHER" />            </intent-filter>        </activity>
(2)修改MainActivity.java

为了测试效果,重写onRestart方法:

@Overrideprotected void onRestart() {super.onRestart();Log.d("MainActivity", "onRestart");}
(3)修改MyActivity1.java

为了测试效果,重写onDestroy方法:

@Overrideprotected void onDestroy() {super.onDestroy();Log.d("MyActivity1", "onDestroy");}
(3)重新发布,查看日志

发布程序,进入MainActivity活动,点击按钮进入MyActivity1活动,点击按钮回到主活动MainActivity,日志显示如下:

从图中可以看出,当在MyActivity1中点击按钮时,返回栈中此时存在一个主活动MainActivity的实例,并且在MyActivity1的下面,当点击时,MyActivity1出栈,实例销毁,调用onDestroy方法,而主活动则调用onRestart方法。

如果再次在主活动中点击按钮进入MyActivity1活动,此时会创建MyActivity1实例,再次返回,见日志如下:

这正是Activity启动模式singleTask的特性。


更多相关文章

  1. Android中解析XML
  2. Android(安卓)网络评分机制
  3. Android实例剖析
  4. Android(安卓)基础面试题目
  5. Android中LocationManager的简单使用,获取当前位置
  6. Android开发实例详解之IMF(Android(安卓)SDK Sample—SoftKeyboar
  7. android文本内容自动朗读实例教程
  8. android数据库 Android自带数据库SQLite 操作 一步一步 图示教程
  9. Android不同版本获取当前wifi信息方法

随机推荐

  1. NanoHttpd 构建android 手机端的HttpServ
  2. AlarmManagerService(一)
  3. 使用jenkins自动化构建Android(安卓)app
  4. Android(安卓)网易云音乐图片高斯模糊
  5. IPC与Binder,Binder线程池,AIDL demo - And
  6. Android(安卓)volley封装实践其二
  7. Android FlexboxLayout使用方式
  8. (4.1.10) ImageView图片自适应
  9. Android(安卓)Display System --- Surfac
  10. Android 内部API (android.internal)和隐藏