Activity 的启动模式有四种,standard、singleTop、singleTask、singleInstance.
1.standard
准备工作:两个Aty 相同布局 Manifests修改启动方式
Manifests:
<activity
android:name=".MainActivity"
android:launchMode="standard">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<activity
android:name=".SecondActivity"
android:launchMode="standard">
</activity>
布局:
<RelativeLayout
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"
tools:context="com.example.administrator.hongyangzi.MainActivity">
<Button
android:id="@+id/btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:background="#91bef0"
android:gravity="center"
android:text="NextAty"
android:textAllCaps="false"
android:textSize="40sp"/>
</RelativeLayout>
MainActivity:
public class MainActivity extends AppCompatActivity {
private Button btn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
LogUtil.fussenLog().d(this.toString());
btn = (Button) findViewById(R.id.btn);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(MainActivity.this , SecondActivity.class);
startActivity(intent);
}
});
}
}
SecondActivity:
public class SecondActivity extends AppCompatActivity {
private Button btn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
LogUtil.fussenLog().d(this.toString());
btn = (Button) findViewById(R.id.btn);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(SecondActivity.this , MainActivity.class);
startActivity(intent);
}
});
}
}
最后运行一下,点击按钮不停的在MainActivity和SecondActivity之间切换,结果如下:
红线上面是MainActivity 蓝线是SecondActivity
可以看出虽然跳转的页面相同但是每次都会创建出一个新的Activity
2.singleTop
准备 做点小修改 在布局里面新增一个Button
Button作用是跳转自身
然后在每个点击事件里把作用打Log
最后运行效果如下:
这个是在Main和Second之间跳转 和standard一样没有变化
但是,点击跳转到自身的按钮:
位于栈顶跳转自身时没有新建一个新的Activity
3.singleTask
4.singleInstance
运行效果如下:
------------------------------------------------------------------------------------------------------------------------------------------------
最后总结: