【发布时间】:2014-07-09 14:19:07
【问题描述】:
我有一个由粘性服务和单独的 SINGLE_TOP 活动组成的应用程序。该服务从服务器接收消息,然后使用 startActivity(intent) 启动 Activity。当用户关闭所有消息后,我使用finish()终止活动。我的印象是,从我的研究来看,一旦完成()执行了任何后续的 startActivity(意图)调用,其他所有人都将通过 onCreate 而不是 onNewIntent。但是,如果我在我关闭最后一条消息的确切时间发送新消息,我(尽管很少)在完成()执行之后但在 onDestroy 之前看到一个 onNewIntent。
有没有人遇到过这种情况,有没有简单的解决办法?
我正在考虑的解决方案是: 1.在执行finish()之前告诉服务Activity正在停止 2. 等待服务的 OK。 3. 然后服务将所有消息排队,直到它被告知活动已经停止 4. 让 onDestroy 活动通知它已停止的服务 5. 服务会发送任何排队的消息。
如果finish() 使用onCreate 会更简单。
感谢您的任何意见。
【问题讨论】:
-
根据我的日志,finish() 执行和 onNewIntent 之间有几百毫秒的差距。
-
我从您的评论中假设您认为下一个意图应该在完成()执行后通过 onCreate 来实现?
-
那么你的Activity是什么时候从栈顶移除的,finish()是在什么时候执行的,还是在onDestroy执行之后呢?如果是后者,那就是糟糕的设计。
-
在这两种情况下,
Activity都会从堆栈顶部移除。也许你应该尝试不同的方法。
标签: android