如何在唤醒时处理Android活动生命周期(警报应用)

时间:2010-10-04 09:02:13

标签: android android-activity wakeup onresume

我正在开发的警报应用程序存在一些问题。

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

  

的OnCreate
  
的onResume   在onPause
  的onResume

为什么他们按顺序运行?不应该叫最后两个?这就是导致我遇到大麻烦的原因,因为当我按下主页或回到手机上时,onPause会运行,我想从中调用finish()。那个部分可以正常工作,但是当手机从睡眠状态唤醒upp时,由于onPause呼叫而无效...

有什么想法吗?

3 个答案:

答案 0 :(得分:1)

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

onRestart 在onStart 的onResume 在onPause onNewIntent 的onResume

正如您所看到的,我有一个onResume,onPause和另一个onResume,并且该活动来自用户。

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

  

活动将始终暂停   在收到新意图之前,所以你   可以指望onResume()被调用   在这种方法之后。

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

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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