如何在Android中检查广播接收器是否正在运行?

6

嗨,有没有可能检查广播接收器是否正在运行?如果可能的话,如何检查?


你想要做什么,为什么或者在哪里想要检查它是否正在运行? - confucius
我正在检查获取纬度值,我使用广播接收器在登录表单中创建了一个应用程序。每当我进入表单时,我的接收器都会自动启动。但是我只需要它启动一次。 - Mercy
1
一个 BroadcastReceiver 并不是永久运行的。要么在清单中注册一个 BroadcastReceiver,使其能够接收各种 Intents,要么在代码中动态地注册/注销。如果你想知道它何时(如果)被触发,那么只需使用 Log 方法在 logcat 中跟踪即可。 - Squonk
这取决于你想让它如何工作?你什么时候注册它?你什么时候注销它? - JoxTraex
@MisterSquonk 我只是动态注册了。 - Mercy
3个回答

7
您可以使用dumpsys来帮助调试动态注册的接收器:

adb shell dumpsys activity broadcasts

与调试器中的grep和断点组合使用,您可以找出您的广播是否在某个时间注册。

这应该有助于静态注册的接收器,但我自己没有使用过:

adb shell dumpsys package


1

如果您想在运行时检查它,可以存储一个全局的boolean变量,并将其设置为false,在onReceive()内部将其设置为true,在onReceive()退出之前将其设置回false。 您随时可以检查此全局变量以确定该广播接收器是否正在运行。

如果您的意思是要知道它是否起作用,请向日志记录示例发送一条消息。

    onReceive(){
     Log.d("my broadcast","works");
    }

1

BroadcastReceiver 不应该在后台运行。它将在有限的范围内被唤醒和终止。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接