Activity四种启动模式

来源:互联网 发布:php课程简介 编辑:程序博客网 时间:2024/06/06 00:55

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

运行效果如下:






------------------------------------------------------------------------------------------------------------------------------------------------

最后总结:















原创粉丝点击