我有一个 Android Activity,有时由用户启动,有时由服务启动。从服务启动时(通过发送我的活动 onNewIntent() 回调接收到的 Intent),我只希望它在已运行时更新其屏幕,但如果尚未运行则不开始运行。
我尝试实现这一目标的方法是在 onResume() 期间在我的 Activity 中设置一个布尔值并在 onPause() 期间清除但我注意到 onPause() 总是在我的 Activity 接收到它的 onNewIntent() 之前被调用,所以值总是错误的。
对于那些不熟悉事件顺序的人,如下所示:
startActivity(myIntent); // Called from service with Intent Extra indicating that fact
onPause(); // Overriden method for my Activity
onNewIntent(Intent myIntent); // Overriden method for my Activity
onResume(); // Overriden method for my Activity
从阅读中我的理解是,这种行为是固定的和有意的,没有办法绕过它。我看到的一个建议是计算 onPause() 和 onNewIntent() 被调用之间的时间间隔,并将其用作我的 Activity 是否在 onNewIntent() 之前立即运行的估计,但我希望这里的人可能知道更好的方法?
我实际上使用的是片段而不是普通的活动,但这并没有改变任何重要的事情。
谢谢,