Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/221.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_Service_Broadcastreceiver - Fatal编程技术网

Android 广播接收机和服务组合的最佳实践

Android 广播接收机和服务组合的最佳实践,android,service,broadcastreceiver,Android,Service,Broadcastreceiver,在我的应用程序中,我使用广播接收器来检测之前记录和注册的接近警报变化。但当广播接收器接收到接近警报时,我需要做我的应用程序所做的事情。当应用程序第一次打开时,我正在创建服务,我正在考虑在广播接收到来自BroadcastReceiver的呼叫时使用该服务来完成该工作,因为即使应用程序被操作系统杀死,我也希望我的应用程序能够正常工作。在这种情况下,什么是最佳实践,我走对了吗 编辑:我也在使用 <intent-filter> <action android:name="andro

在我的应用程序中,我使用广播接收器来检测之前记录和注册的接近警报变化。但当广播接收器接收到接近警报时,我需要做我的应用程序所做的事情。当应用程序第一次打开时,我正在创建服务,我正在考虑在广播接收到来自BroadcastReceiver的呼叫时使用该服务来完成该工作,因为即使应用程序被操作系统杀死,我也希望我的应用程序能够正常工作。在这种情况下,什么是最佳实践,我走对了吗

编辑:我也在使用

<intent-filter>
  <action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>


启动\u如果用户启动设备,则完成意向过滤器以重新注册我的BroadcastReceiver。

是,您正在正确的轨道上

启动完成后,您可以启动 broadcastReceiver类的onReceive()方法中的服务 andoid手机将启动,它将广播意图。
请记住,永远不要在完整的应用程序中注销此广播

是的,您正在正确的轨道上

启动完成后,您可以启动 broadcastReceiver类的onReceive()方法中的服务 andoid手机将启动,它将广播意图。
请记住,永远不要在完整的应用程序中注销此广播

我知道该线程很旧,但:

  • 如果使用boot_COMPLETED筛选器,请不要忘记启动完成android.permission.RECEIVE_boot_COMPLETED的权限

  • 这取决于应用程序的逻辑,但如果您的逻辑需要启动一个在后台执行某些逻辑(侦听传感器数据等)的永久后台服务,则可以在应用程序类中启动该服务和其他所需的初始化。这将向您保证,一旦调用了BroadcastReceive的onReceive(即使在引导完成之后),您的所有初始化都将准备就绪,因为已经调用了应用程序onCreate


  • 我知道线很旧,但:

  • 如果使用boot_COMPLETED筛选器,请不要忘记启动完成android.permission.RECEIVE_boot_COMPLETED的权限

  • 这取决于应用程序的逻辑,但如果您的逻辑需要启动一个在后台执行某些逻辑(侦听传感器数据等)的永久后台服务,则可以在应用程序类中启动该服务和其他所需的初始化。这将向您保证,一旦调用了BroadcastReceive的onReceive(即使在引导完成之后),您的所有初始化都将准备就绪,因为已经调用了应用程序onCreate


  • 现在,BroadcastReceiver将在启动时注册,但我的所有邻近警报都将消失,因此它可能不会接收任何内容,因为我在应用程序中注册了警报,但在启动时应用程序将不存在(我在应用程序启动时添加了所有邻近警报),因此我的邻近警报将被删除。我的应用程序必须重新打开才能重新注册邻近警报,否则我应该在另一个地方重新注册它们?在启动时,您也可以启动一个应用程序,而不是用户将面对的应用程序ui。我认为这不是他们想要的。我想在后台建立这一点,你可以在广播的onReceive()中启动服务,这样你就不需要与UINow交互,BroadcastReceiver将在启动时注册,但我的所有接近警报都将消失,所以它可能不会接收任何内容,因为我在应用程序中注册了警报,但在启动时应用程序将不存在(我在应用程序启动时添加我的所有接近警报)所以我的proximityAlerts。我的应用程序必须重新打开才能重新注册邻近警报,否则我应该在另一个地方重新注册它们?在启动时,你也可以启动一个应用程序,而不是用户将面对的应用程序ui。我想这不是他们想要的。我想在后台建立这一点。你可以在onReceive()中启动一个服务,因此您无需与UIC互动。如果解决了您的问题,请将其标记为答案。如果解决了您的问题,请将其标记为答案。。