我有一个Android Activity,有时是由用户启动的,有时是从一个服务启动的。从服务启动时(通过发送由我的Activities onNewIntent()回调接收的Intent),我只是希望它在已经运行的情况下更新其屏幕,但如果它尚未运行则不会开始运行。我试图实现这一目标已经安排在onResume()期间在我的Activity中设置布尔值并在onPause()期间清除,但我注意到在我的Activity接收到onNewIntent()之前总是调用onPause()该值总是假的。当onNewIntent()被调用时如何检测我的Android Activity是否已经运行?
对于那些不熟悉它是如下的事件序列:
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()之前立即运行的估计,但我希望这里有人可能知道更好的方法?
我实际上是使用碎片而不是普通的活动,但这并没有改变任何重要性。
感谢,
'myIntent.putExtra(“FROM_SERVICE”,真)'服务Activity然后'onNewIntent'' boolean was_from service = myIntent.getBooleanExtra(“FROM_SERVICE”,false);'如果Activity没有启动,那么第一个'onCreate'将被调用... – Selvin 2014-10-29 15:39:49