活动是单实例活动。
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框架将意图路由到?
最佳答案
singleTop
、singleTask
和singleInstance
之间存在差异。阅读the documentation了解更多信息,但您确实需要注意singleInstance
的说明。
只允许运行此活动的一个实例。此活动获取一个只有自身在其中运行的唯一任务;如果再次以相同的目的启动此活动,则会将该任务前移并调用其activity.onnewintent()方法。如果此活动尝试启动新活动,则该新活动将在单独的任务中启动。有关任务的更多详细信息,请参阅任务和后堆栈文档。
这正是你所看到的行为,应该预料到的。
关于android - SingleInstance Activity 使我感到困惑,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8394582/