Android 在执行finish()后调用onNewIntent

Android 在执行finish()后调用onNewIntent,android,Android,我有一个应用程序,它由一个粘性服务和一个单独的活动组成。该服务从服务器接收消息,然后使用startActivity(intent)启动活动。当用户解除所有消息后,我使用finish()终止活动。我当时的印象是,根据我的研究,其他人也是如此,一旦finish()执行了任何后续的startActivity(intent)调用,就会通过onCreate而不是onNewIntent进行。但是,如果我在关闭最后一条消息的确切时间发送新消息,我(尽管很少)会在finish()执行之后、onDestroy之前

我有一个应用程序,它由一个粘性服务和一个单独的活动组成。该服务从服务器接收消息,然后使用startActivity(intent)启动活动。当用户解除所有消息后,我使用finish()终止活动。我当时的印象是,根据我的研究,其他人也是如此,一旦finish()执行了任何后续的startActivity(intent)调用,就会通过onCreate而不是onNewIntent进行。但是,如果我在关闭最后一条消息的确切时间发送新消息,我(尽管很少)会在finish()执行之后、onDestroy之前看到onNewIntent

有没有人经历过这种情况,有没有简单的解决办法

我正在考虑的解决办法是: 1.在执行finish()之前告诉服务活动正在停止 2.等待服务的确认。 3.然后,服务将对任何消息排队,直到通知其活动已停止 4.让活动管理员通知服务已停止 5.服务将发送任何队列中的消息

如果finish()需要一个onCreate,那么一切都会简单得多


谢谢您的任何意见。

我将向您解释一下
单顶

考虑活动A、B和C。让我们假设B是
singleTop
,其他两个是
standard
。这就是堆栈的外观

A->B->C->B->将创建B的新实例

A->B->C->B->B->onNewIntent()调用,未创建B的新实例

finish()

也许在你的情况下,这种情况正在发生:

A->B->C->finish()->B->onNewIntent()调用


A->B->C->B->finish()->finish()->finish()->B->onNewIntent()调用

根据我的日志,finish()执行与onNewIntent()之间有几百毫秒的间隔。我从您的评论中假设您相信下一个意图应该通过onCreate after finish()实现已执行?那么,何时从堆栈顶部删除活动,何时执行finish()或在onDestroy执行之后?如果是后者,那么这是一个糟糕的设计。在这两种情况下,
Activity
都从堆栈顶部移除。也许你应该尝试另一种方法。