Android 我应该在哪里注册广播接收器?
我正在开发一个应用程序,它使用蓝牙自动连接到附近的配对设备。由于这个原因,我需要收听蓝牙特定的广播,如ACTION_FOUND、DISCOVERY_FINISHED等,我必须注册一个广播接收器来收听这些广播并相应地执行操作。问题是,我需要这个广播接收器在我的应用程序的背景下随时工作。我试着把它安装到一个intentservice中,但结果它完成得很快,onDestroy被称为ending my receiver。为了克服这个问题,我插入了一个无限循环,只有当属性从true变为false时,循环才会中断。不知怎的,我觉得这是一个糟糕的做法,所以我问你是否有更好的解决办法 另外,我应该在主要活动中安装接收器吗?它什么时候被摧毁?只有当我使用“后退”按钮退出应用程序,或者使用任务杀手终止进程,或者当我在应用程序中进入另一个GUI窗口时,才会调用onDestroy吗Android 我应该在哪里注册广播接收器?,android,multithreading,bluetooth,broadcastreceiver,intentservice,Android,Multithreading,Bluetooth,Broadcastreceiver,Intentservice,我正在开发一个应用程序,它使用蓝牙自动连接到附近的配对设备。由于这个原因,我需要收听蓝牙特定的广播,如ACTION_FOUND、DISCOVERY_FINISHED等,我必须注册一个广播接收器来收听这些广播并相应地执行操作。问题是,我需要这个广播接收器在我的应用程序的背景下随时工作。我试着把它安装到一个intentservice中,但结果它完成得很快,onDestroy被称为ending my receiver。为了克服这个问题,我插入了一个无限循环,只有当属性从true变为false时,循环才
谢谢,Mike如果您动态注册接收者(
Context.registerReceiver
),则在暂停活动之前,您的任务是注销接收者(Context.unregisterReceiver
)。阅读文件时:
暂停时不会收到意图,这将减少不必要的系统开销
当某些内容隐藏您的活动时,将调用onPause。你可以在简历中重新注册
然而,这不是你需要的。如果您想在应用程序死机时接收广播,则需要在Android清单中声明。我认为这个代码会起作用:
<receiver android:name=".YourReceiverClassName">
<intent-filter>
<action android:name="android.bluetooth.adapter.action.ACTION_FOUND"/>
<action android:name="android.bluetooth.adapter.action.ACTION_DISCOVERY_FINISHED"/>
</intent-filter>
</receiver>
谢谢,这里有更多信息:@Jong您对这里的问题有什么想法吗