Activity是SingleTask并且是root的任务,top的reStart活动被破坏了吗?

时间:2016-04-29 08:49:10

标签: android

  • 活动是SingleTask
  • B活动和C活动是标准的,

    A - > B - > C,然后按Home,重新按下应用程序图标,为什么B,C销毁?为什么B首先被摧毁,C被摧毁了?

    <activity
        android:name=".Main1Activity"
        android:launchMode="singleTask">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
    
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity android:name="com.example.dell.taskdemo.Main2Activity" />
    <activity android:name="com.example.dell.taskdemo.Main3Activity" />
    

public class Main1Activity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        System.out.println("---1:  onCreate  " + getTaskId());
    }

    public void enter(View view) {
        Intent intent = new Intent(this, Main2Activity.class);
        startActivity(intent);
    }
}

public class Main2Activity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);
        System.out.println("---2:  onCreate  " + getTaskId());
    }

    public void enter(View view) {
        startActivity(new Intent(this, Main3Activity.class));
    }
}

public class Main3Activity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main3);
        System.out.println("---3:  onCreate  " + getTaskId());

    }
}

2 个答案:

答案 0 :(得分:1)

简而言之,“singleTask”活动允许其他活动成为其任务的一部分...因此,当您再次重新打开应用程序时,会显示活动a,因为截至目前活动b,c是其中的一部分任务...

首先删除活动b,因为它在活动c之前开始。

答案 1 :(得分:0)

检查清单文件,确保活动B和C未设置为“noHistory = true”。如果是,请删除该行,它应该解决您的问题。

不应仅仅因为活动A是SingleTask而销毁活动B和C.拥有SingleTask活动只是意味着它必须位于活动堆栈的底部 - 因此它只存在一次。如果每次关闭应用程序时B和C都在完成,那是因为B和C没有正确设置。所以问题在于B和C,而不是A。