如何从服务中调用活动

时间:2014-06-04 21:28:09

标签: android android-intent service

我有一个调用服务的MainActivity。服务的onStart方法循环,​​直到达到特定变量。当达到变量时,我希望服务向用户发出警报并将MainActivity带到屏幕,以便用户可以决定是否要再次运行该服务。因为它是一个服务,MainActivity可能已经在前台,或者根本没有活动的实例。无论哪种方式,它都应该恢复MainActivity的第一个实例。我知道我必须使用诸如intent和FLAG_ACTIVITY_REORDER_TO_FRONT之类的东西。我只是不知道如何实现意图,以便即使用户在另一个应用程序或关闭应用程序,MainActivity也会被带到前台。

更新 以下链接也有助于解决我的问题。感谢你们。

Example: Communication between Activity and Service using Messaging

1 个答案:

答案 0 :(得分:0)

您的MainActivity调用服务的事实并不意味着MainActivity将失去焦点。除非用户关闭或点击“主页”按钮,否则活动应保持焦点。我不希望服务导致Activity进入前台,它只是听起来非Android。如果实际上允许这样的事情,我希望应用程序能够请求用户发出允许这种情况发生的许可。

也就是说,您的标题表明您希望与服务中的活动进行通信。要做到这一点,你有几个选择:

  1. 通过AIDL绑定到服务,并提供一个AIDL回调,以便在服务需要通知Activity发生了某些事情时调用。
  2. 将BroadcastReceiver添加到您的Activity中,让服务发出Intent通知Activity发生了某些事情。
  3. 在任何一种情况下,与Activity的通信都不应导致它返回到前台,因为这会给用户带来安全风险。应用程序不应该返回到前台,直到用户从应用程序抽屉中重新打开它,或者从最近的时间带回来。