活动是单实例活动。

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;

public class A extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setTitle("A");
        startActivity(new Intent(this, B.class));
    }

    @Override
    protected void onNewIntent(Intent intent) {
        super.onNewIntent(intent);
        testLog("new Intent A");
    }

    private void testLog(String string) {
        Log.d("test", string);
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        testLog("destroy A");
    }
}

B活动是标准活动。
正常情况下a->b.用户操作返回操作,b销毁。用户再次按下后退键,一个破坏。没错。
但在另一种情况下:a->b.用户操作主页按钮。当用户重新启动任务时,android框架调用a的onNewIntent()
为什么?我是说活动堆栈应该是这样的:
-B
-A

为什么android框架将意图路由到?

最佳答案

singleTopsingleTasksingleInstance之间存在差异。阅读the documentation了解更多信息,但您确实需要注意singleInstance的说明。
只允许运行此活动的一个实例。此活动获取一个只有自身在其中运行的唯一任务;如果再次以相同的目的启动此活动,则会将该任务前移并调用其activity.onnewintent()方法。如果此活动尝试启动新活动,则该新活动将在单独的任务中启动。有关任务的更多详细信息,请参阅任务和后堆栈文档。
这正是你所看到的行为,应该预料到的。

关于android - SingleInstance Activity 使我感到困惑,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8394582/

10-10 00:53