Android中Activity的启动模式基础上
在AndroidManifest.xml中
改为android:launchMode="SingleTop"
运行,TaskID没有改变,实例i发生了改变

在java中创建一个activity为BAty.java(Blank)
在content_baty.xml中添加

<TextView
        android:id="@+id/tv"
        android:text="Hello World!"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        />

此处id为tv,同一个文件里的id必须不同,不同文件的id可以不同
在BAty.java中

tv= (TextView) findViewById(R.id.tv);

tv.setText(String.format("TaskID:%d\nCurren Activity id:%s", getTaskId(), toString()));
在content_main.xml中修改和重构android:id="@+id/btnMainAty" />

<Button
    android:text="启动MainActivity"
    android:id="@+id/btnMainAty" />
<Button
    android:text="启动BAty"
    android:id="@+id/btnSatrtBAty" />

在MainActivity.java中添加

findViewById(R.id.btnSatrtBAty).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                startActivity(new Intent(MainActivity.this,BAty.class));
            }
        });

把content_main.xml的内容全部复制到content_baty.xml
把MainActivity.java中的

findViewById(R.id.btnMainAty).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                startActivity(new Intent(MainActivity.this, MainActivity.class));
            }
        });


        findViewById(R.id.btnSatrtBAty).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                startActivity(new Intent(MainActivity.this,BAty.class));
            }
        });

复制BAty.java中,有提示,确定即可
把MainActivity改为BAty
运行

启动MainActivity,只要是SingTask,TaskID没有变化,
启动BAty,实例id发生变化 后退一下,实例id发生变化
启动BAty,实例id发生变化
再启动MainActivityM,实例id发生变化
在同一个任务栈里,指定启动模式是SingleTop,
如果activity处于栈点,只能创建一个实例, 如果不处于当前栈点,将会创建一个新的实例

标签:安卓开发

你的评论