0

我正在开发的警报应用程序有几个问题。

我认为有点奇怪的第一件事是,当闹钟响起并唤醒手机时。这些事情发生了。

oncreate
onresume
onpause
onresume

他们为什么按这个顺序运行?最后两个不应该叫吗?这就是给我带来大麻烦的原因,因为当我按下 home 键或返回电话时,onPause 会运行,我想从中调用 finish()。这部分可以正常工作,但是当手机由于 onPause 呼叫而从睡眠中唤醒时,这不起作用......

有任何想法吗?

4

3 回答 3

1

我也有类似的问题:我在后台创建了一个活动和一个服务。当服务从网络接收到一些数据时,它会启动活动。一切正常,直到活动处于 onStop 阶段并且屏幕变黑。当我遇到这种情况并请求重新启动活动时,我有:

onRestart onStart onResume onPause onNewIntent onResume

正如你所看到的,我有一个 onResume、onPause 和另一个 onResume,并且活动来到了用户面前。

似乎是因为我们使用了 singleTop 或 singleInstance Activity(可能也出现在 singleTask 上)。问题在于,当您向已创建的 singleTop Activity 发送 Intent 时,您的新 Intent 会激活 onNewIntent() 方法。从 API 你可以看到:

在接收到新意图之前,活动将始终暂停,因此您可以指望在此方法之后调用 onResume()。

所以也许这就是你收到 onResume-onPause-onResume 电话的原因。

然而,这是一种奇怪的行为!

于 2011-01-07T18:43:46.000 回答
0

你真的想在 onPause() 中调用 finish() 吗?当当前活动不再在前台时调用 onPause()。也许你想在你的 onStop() 方法中调用 finish() 。有关详细信息,请参阅Activity lifecycle

于 2010-10-04T09:43:42.813 回答
0

我建议您查看官方警报应用程序如何处理事件: https ://android.googlesource.com/platform/packages/apps/DeskClock

于 2010-10-04T09:49:23.603 回答