Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/201.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何从服务调用活动_Android_Android Intent_Service - Fatal编程技术网

Android 如何从服务调用活动

Android 如何从服务调用活动,android,android-intent,service,Android,Android Intent,Service,我有一个调用服务的main活动。服务的onStart方法循环,直到达到特定变量。当变量到达时,我希望服务向用户发出警报,并将MainActivity显示在屏幕上,以便用户可以决定是否再次运行服务。因为它是一个服务,MainActivity可能已经在前台,或者它可能根本没有该活动的实例。无论如何,它都应该恢复MainActivity的第一个实例。我知道我必须使用一些东西,比如意图和标记活动,重新排序。我只是不知道如何实现该意图,以便即使用户在另一个应用程序中或已关闭该应用程序,也能将MainAct

我有一个调用服务的main活动。服务的onStart方法循环,直到达到特定变量。当变量到达时,我希望服务向用户发出警报,并将MainActivity显示在屏幕上,以便用户可以决定是否再次运行服务。因为它是一个服务,MainActivity可能已经在前台,或者它可能根本没有该活动的实例。无论如何,它都应该恢复MainActivity的第一个实例。我知道我必须使用一些东西,比如意图和标记活动,重新排序。我只是不知道如何实现该意图,以便即使用户在另一个应用程序中或已关闭该应用程序,也能将MainActivity置于前台

更新: 下面的链接也帮助解决了我的问题。谢谢你们


MainActivity调用服务的事实并不意味着MainActivity将失去焦点。除非用户关闭活动或点击主页按钮,否则活动应保持焦点。我不希望一个服务会导致一个活动出现在前台,它只是听起来不像Android。如果这样的事情真的被允许,我希望应用程序向用户请求权限,以允许这种情况发生

也就是说,您的标题表明您希望与来自服务的活动进行沟通。为此,您有两个选择:

通过AIDL绑定到服务,并提供一个AIDL回调,当服务需要通知活动发生了什么事情时调用该回调。 将BroadcastReceiver添加到您的活动中,并让服务发送意图,以通知活动发生了什么。
在任何一种情况下,与活动的通信都不应导致它返回前台,因为这会给用户带来安全风险。在用户从应用程序抽屉重新打开应用程序或从最近的应用程序中恢复应用程序之前,应用程序不应返回前台。

感谢您的回复@bstar55。如果服务不应在前台启动活动,并且我让服务通知活动启动某种警报或声音,那么通知用户警报来自何处以及如何快速返回应用程序的最佳方式是什么?因为我有工作代码,但随机播放警报声音似乎很尴尬。一个简单的通知就足够了吗?再次感谢您的帮助。在这种情况下,您将让服务显示一个通知。这篇文章包括:谢谢!我还需要AIDL,以获取我希望服务提供活动的数据。