Android中Activity的4种启动模式
2014-04-09 11:29
363 查看
首先Activity在创建后是存入一个任务栈中,用来管理Activity。Android中Activity有四种启动模式,分别是:
standard :每次通过一个Intent启动一个Activity的时候,都会在当前栈里面新建一个Activity。
singleTop
:如果当前栈顶的Activity被再次启动,不会在当前栈中新建一个Activity,只会通过onNewIntent方法来重用这个实例。没有这个Activity的话,就在当前栈中新建一个Activity。
singleTask
:如果在当前栈中有一个Activity实例,那么再次启动同一个Activity的时候,当前栈中的Activity会被移到栈顶(根据栈的特性,这个栈中我们启动的Activity上面的其他Activity都会被移除栈)。
以上三种都是在同一个栈中的描写,接下来的singleInstance可以重新开启一个栈,从而实现了跨应用来共享Activity。
singleInstance
:当新建一个singleInstance 的Activity,会重新开辟一个栈用来存储,并且这个栈有且只能有一个[b]singleInstance
的Activity,如果其他应用程序通过Intent来打开这个Activity的时候,会使用onNewIntent来重用这个栈中的Activity。[/b]
测试代码:
XML文件
Ser类:
standard :每次通过一个Intent启动一个Activity的时候,都会在当前栈里面新建一个Activity。
singleTop
:如果当前栈顶的Activity被再次启动,不会在当前栈中新建一个Activity,只会通过onNewIntent方法来重用这个实例。没有这个Activity的话,就在当前栈中新建一个Activity。
singleTask
:如果在当前栈中有一个Activity实例,那么再次启动同一个Activity的时候,当前栈中的Activity会被移到栈顶(根据栈的特性,这个栈中我们启动的Activity上面的其他Activity都会被移除栈)。
以上三种都是在同一个栈中的描写,接下来的singleInstance可以重新开启一个栈,从而实现了跨应用来共享Activity。
singleInstance
:当新建一个singleInstance 的Activity,会重新开辟一个栈用来存储,并且这个栈有且只能有一个[b]singleInstance
的Activity,如果其他应用程序通过Intent来打开这个Activity的时候,会使用onNewIntent来重用这个栈中的Activity。[/b]
测试代码:
XML文件
<activity android:name=".Test" android:label="@string/app_name" android:launchMode="singleInstance" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".Ser" android:label="@string/app_name" android:launchMode="standard" > </activity>Test类:
public class Test extends Activity{ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.test); Button button=(Button)findViewById(R.id.button); String s="Test"+getTaskId();//得到Task的ID,也就是上面提到的栈ID Log.e("TAG",s); button.setOnClickListener(new OnClickListener(){ @Override public void onClick(View v) { Intent intent =new Intent(Test.this,Ser.class); startActivity(intent); } }); } }
Ser类:
public class Ser extends Activity{ @Override protected void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.ser); Button button=(Button)findViewById(R.id.ser); String s="Ser"+getTaskId(); Log.e("TAG",s); button.setOnClickListener(new OnClickListener(){ @Override public void onClick(View v) { Intent intent =new Intent(Ser.this,Test.class); startActivity(intent); } }); } }
相关文章推荐
- android 中的4种activity启动模式(launchMode)
- Android activity的4种启动模式,launchMode,图文详解
- Android中activity的4种启动模式
- android activity的4种启动模式
- Android 的进阶知识点之一Activity 的4种启动模式
- Android:Activity的4种启动模式
- Android Activity 4种启动模式
- Android-Activity生命周期-4种启动模式-数据传递-显式隐式跳转
- Android启动activity的4种模式(standard、singleTop、singleTask、singleINstance)
- 【android】activity的4种启动模式简介
- android_42_activity的4种启动模式
- Android Activity的4种启动模式
- Android Activity的4种启动模式详解(代码+截图)
- android Activity4种启动模式及其特点
- Android启动activity的4种模式(standard、singleTop、singleTask、singleINstance)
- Android Activity的4种启动模式详解(示例)
- Android 中 Activity 的4种启动模式
- Android(java)学习笔记225:Activity与Task的4种启动模式
- Android Activity 4种启动模式的详解
- 【android】Activity的启动模式