我正在开发的警报应用程序存在一些问题。
我认为有点奇怪的是,当闹钟响起并唤醒手机时。这些事情发生了。
的OnCreate
的onResume 在onPause
的onResume
为什么他们按顺序运行?不应该叫最后两个?这就是导致我遇到大麻烦的原因,因为当我按下主页或回到手机上时,onPause会运行,我想从中调用finish()。那个部分可以正常工作,但是当手机从睡眠状态唤醒upp时,由于onPause呼叫而无效...
有什么想法吗?
答案 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