Android--Task(stack)的使用
Android的Task是一个Activity栈,用来完成用户的某一个目的,而不管这个Acitivity是属于哪个AP的。Task中的Activity可以分属于不同的AP。
在Task中,有一个Acitivity叫root activity,它是用来启动一个Task。
Tasks在系统中做交互的时候,这个Task所包含的所有Activities会被作为一个整体移动。比方说:Task A被设置成foreground/background task的时候, 整个task(activity stack)都会随之移动。
(再补充一点就是说:一个Activity栈也可能是由一个或多个Task组成。)
Task中还有一个重要的属性就是用户可以中断目前正在做的事情,而去跑另外一个Task。基于这样一个特性,用户就可以同时跑不同的task,而且可以在它们之间切换。
有三个方法中断Task:1.Notification;2.用户操作,比如按Home或者开启另外一个程序;3.Activity中自己定义的New Task,比如说Map或者Browser,在Email中选择address会Launch Google Map,选择Link会Launch Browser,等等。
Applications:
一个Android Application由一个或者多个Acitivity组成,这其中或许还包括一个或多个Service,它会被打包成.apk文件。
补充:Launch Activity的四种模式:standard(default),singleTop,singleTask,singleInstance
standard或者singleTop activity可以被实例化多个,而singleTask或singleInstance只可以有一个实例。
Activity B Activity B
Activity D Activity B
Activity C Activity D singleTop = single + top
Activity B Activity C
Activity A Activity A
B是singleTop B不是singleTop
多个Activity组成了一个Task集合单元
本人画了一图给大家参详细一下,也许思路会更明确:
还给大家引入一概念: 显示对话框的Activity
运行效果:
只需要改AndroidManifest.xml中 android:theme="@android:style/Theme.Dialog"
>就OK了
源代码和上次Activity生命周期一样.大家可以去下载多加一个Activity
本人把AndroidManifest.xml代码发出来共享一下:
1 <?xml version="1.0" encoding="utf-8"?> 2 <manifest xmlns:android="http://schemas.android.com/apk/res/android" 3 package="com.example.activity04" 4 android:versionCode="1" 5 android:versionName="1.0" > 6 7 <uses-sdk 8 android:minSdkVersion="8" 9 android:targetSdkVersion="16" />10 11 <application12 android:allowBackup="true"13 android:icon="@drawable/ic_launcher"14 android:label="@string/app_name"15 android:theme="@style/AppTheme" >16 <activity17 android:name="com.example.activity04.MainActivity"18 android:label="@string/app_name" >19 <intent-filter>20 <action android:name="android.intent.action.MAIN" />21 22 <category android:name="android.intent.category.LAUNCHER" />23 </intent-filter>24 </activity>25 <activity26 android:name="com.example.activity04.SecondActivity"27 android:label="@string/title_activity_second"28 android:theme="@android:style/Theme.Dialog"29 >30 </activity>31 <activity32 android:name="com.example.activity04.ThridActivity"33 android:label="@string/title_activity_Thrid"34 >35 </activity>36 </application>37 38 </manifest>
更多相关文章
- 【Android(安卓)Developers Training】 16. 暂停和恢复一个Activ
- android notification的用法
- Android(安卓)MVP+Retrofit(封装)+RxJava实例
- Android用户界面 UI组件--TextView及其子类(五) DigitalClock,An
- Android(安卓)6.0 变更
- 【尚观】Android游戏与应用开发最佳学习之路_转载来学习Android
- 学习笔记:Android基本组件之Activity
- android 耳机插入检测
- Android(安卓)8.1隐藏状态栏图标的实例代码