Activity的四种启动模式:
1.standard:该启动模式为Android默认启动模式,每当启动一个activity就会在任务栈中创建一个 activity,这种模式默认的但是非常的浪费空间,但是可以有效的保存之前启动的activity。用于保证之前页面不丢失的时 候。
2.single Top:该启动模式是在查看任务栈顶和你将要启动的activity是否是一个activity,是一个就直接复用,否则就新创一个实例,这个经常用于类似聊天界面,当有人给你发消息时更新activity。
3.single Task:该启动模式是在任务栈中看是否有和你一样的activity,有则直接把该activity之上的activity全部弹出使之置于栈顶。常用于一个程序的入口处。
4.single Instance:该启动模式是再创建一个任务栈把activity放进去。此模式用于不同应用调用一个activity时应用。用于程序和界面分开的时候。
自己写的一个demo:
四个activity基本一样就只发一个了
Java部分:
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class standard extends AppCompatActivity implements View.OnClickListener{
private Button btn_standard;
private Button btn_singletop;
private Button btn_singletask;
private Button btn_singleinstence;
private TextView tv_activity;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_standard);
Log.i("TAG","intent:_______________"+this.toString());
initView();
}
private void initView() {
btn_standard = (Button) findViewById(R.id.btn_standard);
btn_singletop = (Button) findViewById(R.id.btn_singletop);
btn_singletask = (Button) findViewById(R.id.btn_singletask);
btn_singleinstence = (Button) findViewById(R.id.btn_singleinstence);
tv_activity = (TextView) findViewById(R.id.tv_activity);
btn_standard.setOnClickListener(this);
btn_singletop.setOnClickListener(this);
btn_singletask.setOnClickListener(this);
btn_singleinstence.setOnClickListener(this);
tv_activity.setText(this.toString());
}
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.btn_standard:
this.startActivity(new Intent(this,standard.class));
break;
case R.id.btn_singletop:
this.startActivity(new Intent(this,singleTop.class));
break;
case R.id.btn_singletask:
this.startActivity(new Intent(this,singleTask.class));
break;
case R.id.btn_singleinstence:
this.startActivity(new Intent(this,singleInstance.class));
break;
}
}
}
xml部分:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:gravity="center"
tools:context="com.example.administrator.myapplication.standard">
<TextView
android:text="standard"
android:textSize="50px"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/tv_activity"
android:textColor="@color/colorAccent"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<Button
android:id="@+id/btn_standard"
android:text="standard"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<Button
android:id="@+id/btn_singletop"
android:text="singletop"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<Button
android:id="@+id/btn_singletask"
android:text="singletask"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<Button
android:id="@+id/btn_singleinstence"
android:text="singleinstance"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
AndroidManifest.xml部分:
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity
android:name=".singleTop"
android:launchMode="singleTop" />
<activity
android:name=".singleTask"
android:launchMode="singleTask" />
<activity android:name=".singleInstance"
android:launchMode="singleInstance"/>
<activity android:name=".standard"
android:launchMode="standard">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
</application>
以上就是我写的个人理解了,作为菜鸟的我第一次写,请多多支持。