Android 我应该在哪里注册广播接收器?

Android 我应该在哪里注册广播接收器?,android,multithreading,bluetooth,broadcastreceiver,intentservice,Android,Multithreading,Bluetooth,Broadcastreceiver,Intentservice,我正在开发一个应用程序,它使用蓝牙自动连接到附近的配对设备。由于这个原因,我需要收听蓝牙特定的广播,如ACTION_FOUND、DISCOVERY_FINISHED等,我必须注册一个广播接收器来收听这些广播并相应地执行操作。问题是,我需要这个广播接收器在我的应用程序的背景下随时工作。我试着把它安装到一个intentservice中,但结果它完成得很快,onDestroy被称为ending my receiver。为了克服这个问题,我插入了一个无限循环,只有当属性从true变为false时,循环才

我正在开发一个应用程序,它使用蓝牙自动连接到附近的配对设备。由于这个原因,我需要收听蓝牙特定的广播,如ACTION_FOUND、DISCOVERY_FINISHED等,我必须注册一个广播接收器来收听这些广播并相应地执行操作。问题是,我需要这个广播接收器在我的应用程序的背景下随时工作。我试着把它安装到一个intentservice中,但结果它完成得很快,onDestroy被称为ending my receiver。为了克服这个问题,我插入了一个无限循环,只有当属性从true变为false时,循环才会中断。不知怎的,我觉得这是一个糟糕的做法,所以我问你是否有更好的解决办法

另外,我应该在主要活动中安装接收器吗?它什么时候被摧毁?只有当我使用“后退”按钮退出应用程序,或者使用任务杀手终止进程,或者当我在应用程序中进入另一个GUI窗口时,才会调用onDestroy吗


谢谢,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您对这里的问题有什么想法吗