Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/225.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 广播接收机vs IntentService_Android_Broadcastreceiver_Intentservice - Fatal编程技术网

Android 广播接收机vs IntentService

Android 广播接收机vs IntentService,android,broadcastreceiver,intentservice,Android,Broadcastreceiver,Intentservice,我看到代码中使用了BroadcastReceiver和IntentService来监听位置更新。这是一个来自谷歌的例子,所以我认为应该有一个很好的理由。如果你看和,内容几乎是一样的。是因为一个人在后台工作吗 我只是点对点地说,不涉及额外的信息,因为最近应用程序后台行为和前台和后台位置更新有很多变化 在Android Oreo及以上版本中,当应用程序转到后台时,无法启动意图服务,而可以调用广播接收器 注意:您链接的代码是android code labs教程的一部分,关于您的代码的进一步解释可以在

我看到代码中使用了BroadcastReceiver和IntentService来监听位置更新。这是一个来自谷歌的例子,所以我认为应该有一个很好的理由。如果你看和,内容几乎是一样的。是因为一个人在后台工作吗

我只是点对点地说,不涉及额外的信息,因为最近应用程序后台行为和前台和后台位置更新有很多变化

在Android Oreo及以上版本中,当应用程序转到后台时,无法启动意图服务,而可以调用广播接收器


注意:您链接的代码是android code labs教程的一部分,关于您的代码的进一步解释可以在

中找到,我将点对点进行说明,不涉及额外的信息,因为应用程序背景行为和前台和后台的位置更新最近有很多变化

在Android Oreo及以上版本中,当应用程序转到后台时,无法启动意图服务,而可以调用广播接收器


注意:您链接的代码是android code labs教程的一部分,有关您的代码的详细说明,请参见

您是否阅读了这两个类的注释,谢谢你,迈克。老实说,我通读了代码和注释。我看到BroadcastReceiver在较新的SDK中广泛使用,不确定为什么需要使用IntentService。此外,它们如何在支持两者的系统中共存。对不起,在学习/挣扎阶段:-)不用担心。我只是想知道到底是哪一点造成了混乱。总之,
BroadcastReceiver
IntentService
基本上都是在后台运行的,因为它们实际上没有UI。他们在Oreo和更高版本中使用
广播接收器的原因是Oreo对在后台运行的内容进行了限制。在奥利奥之前,这项服务会运作得很好。从Oreo开始,对于至少针对该版本的应用程序,该服务将不允许在后台运行,但接收器广播仍然是允许的。因为只有一瞬间的工作价值,他们只需提前完成,并在接收器本身中完成。我不确定他们为什么会同时显示这两种方法,因为接收者应该处理所有版本,但我猜这只是出于教育目的。如果你需要做比这里演示的更多的工作,你可能需要从接收器启动一个服务,因此他们可能会保留该服务作为一个通用示例。哦,这就是为什么他们不只是在所有版本中使用接收器的原因。他们明确地演示了新的限制和必要的代码更改。那就说得通了。你读过那两节课的注释了吗,谢谢你,迈克。老实说,我通读了代码和注释。我看到BroadcastReceiver在较新的SDK中广泛使用,不确定为什么需要使用IntentService。此外,它们如何在支持两者的系统中共存。对不起,在学习/挣扎阶段:-)不用担心。我只是想知道到底是哪一点造成了混乱。总之,
BroadcastReceiver
IntentService
基本上都是在后台运行的,因为它们实际上没有UI。他们在Oreo和更高版本中使用
广播接收器的原因是Oreo对在后台运行的内容进行了限制。在奥利奥之前,这项服务会运作得很好。从Oreo开始,对于至少针对该版本的应用程序,该服务将不允许在后台运行,但接收器广播仍然是允许的。因为只有一瞬间的工作价值,他们只需提前完成,并在接收器本身中完成。我不确定他们为什么会同时显示这两种方法,因为接收者应该处理所有版本,但我猜这只是出于教育目的。如果你需要做比这里演示的更多的工作,你可能需要从接收器启动一个服务,因此他们可能会保留该服务作为一个通用示例。哦,这就是为什么他们不只是在所有版本中使用接收器的原因。他们明确地演示了新的限制和必要的代码更改。那么,这是有道理的。