我有一个以单任务模式(Android 2.2)运行的活动,它从其他活动或服务接收意图。我的活动将每个收到的意图推送到队列中并对其执行某些操作。完成后,如果没有任何要处理的意图(即队列为空),它将调用 finish()。
问题是当它在调用 finish() 后立即收到意图时:调用 onNewIntent 和 onResume 方法,但我的 Activity 随后被 Android 销毁(onPause/onDestroy),并且该意图未得到处理。
我知道这是一个相当顽皮的场景,但我对这种行为感兴趣......所以问题是:是否可以在调用 finish() 后中断 finish() 和/或恢复活动?
谢谢!
听起来您正在尝试重新创建 IntentService
在调用 finish() 时,会调用 onDestroy() 方法,然后您的活动就死了:)
此活动可以通过某种意图再次启动,但将调用 oncreate 而不是 onNewIntent
重要注意的是,finish() 语句和 onDrestroy 方法之间无法接收意图!
因此,如果调用完成,那么您的活动的每个新意图都将导致调用 onCreate()
所以你不用担心
您不应该尝试中断不可能的完成,因为它是原子操作 但是您需要检查您的逻辑并增强您的 oncreate 和 onNewIntent 方法以优雅地处理您的场景
从 onNewIntent 开始活动。
@Override
protected void onNewIntent(Intent intent){
super.onNewIntent(intent);
if (isFinishing()) {
// Start the activity again using the new intent
startActivity(intent);
return;
}
}