这有点奇怪。 我在ClassA中创建了一个Intent
Intent notifcationIntent = new Intent();
notifcationIntent.setClass(context,MyClass.class);
notifcationIntent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
String dbgTimestamp = new Long(System.currentTimeMillis()).toString();
notifcationIntent.putExtra("dbgTimestamp",dbgTimestamp);
我在创建dbgTimestamp后记录它,其值为1000
在MyClass.class中,我收到了Intent,log dbgTimestamp(显示了1000的执行值)并退出。我已经验证了MyClass.onDestroy()正在执行。
到目前为止一切顺利。
然后ClassA再次执行并构建另一个Intent
Intent notifcationIntent = new Intent();
notifcationIntent.setClass(context,MyClass.class);
notifcationIntent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
String dbgTimestamp = new Long(System.currentTimeMillis()).toString();
notifcationIntent.putExtra("dbgTimestamp",dbgTimestamp);
我在创建dbgTimestamp后记录它,其值为2000
MyClass再次执行,收到Intent但是根据日志dbgTimestamp STILL包含1000
我不明白为什么。
MyClass正在被销毁,即使它不包含onNewIntent(),文档也说:
"这是为将launchMode设置为" singleTop"在他们的包中,或者如果客户端在调用startActivity(Intent)时使用了FLAG_ACTIVITY_SINGLE_TOP标志。在任何一种情况下,当在活动堆栈的顶部而不是正在启动的活动的新实例重新启动活动时,将在现有实例上使用用于重新启动的Intent调用onNewIntent()它"
但是onNewIntent()没有被执行。
我有点不知道发生了什么以及如何纠正它。