是否可以中断finish()

问题描述 投票:0回答:3

我有一个以单任务模式(Android 2.2)运行的活动,它从其他活动或服务接收意图。我的活动将每个收到的意图推送到队列中并对其执行某些操作。完成后,如果没有任何要处理的意图(即队列为空),它将调用 finish()。

问题是当它在调用 finish() 后立即收到意图时:调用 onNewIntent 和 onResume 方法,但我的 Activity 随后被 Android 销毁(onPause/onDestroy),并且该意图未得到处理。

我知道这是一个相当顽皮的场景,但我对这种行为感兴趣......所以问题是:是否可以在调用 finish() 后中断 finish() 和/或恢复活动?

谢谢!

android android-activity activity-finish
3个回答
1
投票

听起来您正在尝试重新创建 IntentService


0
投票

在调用 finish() 时,会调用 onDestroy() 方法,然后您的活动就死了:)

此活动可以通过某种意图再次启动,但将调用 oncreate 而不是 onNewIntent

重要注意的是,finish() 语句和 onDrestroy 方法之间无法接收意图!

因此,如果调用完成,那么您的活动的每个新意图都将导致调用 onCreate()

所以你不用担心

您不应该尝试中断不可能的完成,因为它是原子操作 但是您需要检查您的逻辑并增强您的 oncreate 和 onNewIntent 方法以优雅地处理您的场景


0
投票

从 onNewIntent 开始活动。

@Override
protected void onNewIntent(Intent intent){
    super.onNewIntent(intent);

    if (isFinishing()) {
        // Start the activity again using the new intent
        startActivity(intent);
        return;
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.