单 词 | 说 明 |
URL | 统一资源定位符 |
SingleInstance | 单例模式 |
SingleTask | 独享堆栈 |
SingleTop | 独享栈顶 |
Standard | 标准模式 |
Handler | 异步视图处理器 |
要点:堆,列队优先,先进先出。栈,先进后出。
任务堆栈
Android中的任务堆栈是指与用户交互的一组Activity的集合,Activity会被按打开顺序安排在一个堆栈里。
Acitivity启动模式
Standard 标准模式(默认模式)
Standard :每次激活Activity时都会创建Activity,并放入任务栈中
SingleTop 独享堆栈顶端
SingleTop :如果在任务的栈顶正好存在该Activity的实例,就重用该实例,否者就会创建新的实例并放入栈顶(即使栈中已经存在该Activity实例,只要不在栈顶,都会创建实例)
SingleTask 独享任务堆栈
SingleTask:如果在栈中已经有该Activity的实例,就重用该实例(会调用实例的onNewIntent())。重用时,会让该实例回到栈顶,因此在它上面的实例将会被移除栈。如果栈中不存在该实例,将会创建新的实例放入栈中
SingleInstance单例
SingleInstance:在一个新栈中创建该Activity实例,并让多个应用共享该栈中的该Activity实例。一旦该模式的Activity的实例存在于某个栈中,任何应用再激活该Activity时都会重用该栈中的实例,其效果相当于多个应用程序共享一个应用,不管谁激活该Activity都会进入同一个应用中
在清单文件中配置
launchMode=" "
上课案例
MainActivity.java
public class MainActivity extends Activity {
Button start_activity_btn1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
initView();
}
public void initView(){
start_activity_btn1 = (Button)findViewById(R.id.start_activity_btn1);
start_activity_btn1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this,TwoActivity.class);
startActivity(intent);
}
});
}
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
}
}
TwoActivity.java
public class TwoActivity extends Activity {
Button start_activity_btn2;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.two);
initView();
}
public void initView(){
start_activity_btn2 = (Button)findViewById(R.id.start_activity_btn2);
start_activity_btn2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(TwoActivity.this,ThreeActivity.class);
startActivity(intent);
}
});
}
}
ThreeActivity.java
public class ThreeActivity extends Activity {
Button start_activity_btn3;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.three);
initView();
}
public void initView(){
start_activity_btn3 = (Button)findViewById(R.id.start_activity_btn3);
start_activity_btn3.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(ThreeActivity.this,MainActivity.class);
startActivity(intent);
}
});
}
}
AndroidManifest.xml
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.ryan.lsn3_17.MainActivity"
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=".TwoActivity"></activity>
<activity android:name=".ThreeActivity"></activity>
</application>