应用程序启动后,我需要让广播接收器一直运行.
这是在应用程序中注册此接收器的代码
IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_ON);
filter.addAction(Intent.ACTION_SCREEN_OFF);
BroadcastReceiver mReceiver = new ScreenEventsReceiver();
registerReceiver(mReceiver, filter);
Run Code Online (Sandbox Code Playgroud)
和接收器的代码
public class ScreenEventsReceiver extends BroadcastReceiver {
public static boolean wasScreenOn = true;
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) {
wasScreenOn = false;
Log.d("ScreenEventReceiver", "ON");
} else if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) {
wasScreenOn = true;
Log.d("ScreenEventReceiver", "ON");
}
}
}
Run Code Online (Sandbox Code Playgroud) 我BroadcastReceiver
在清单中注册了一个接收来自的通知AlarmManager
.当应用程序正在运行时,这一切都很有效,即onReceive()
正在调用该方法.
但是,如果我强制停止应用程序,以便我可以测试是否BroadcastReceiver
仍然会收到来自AlarmManager
未运行的通知,onReceive()
则永远不会调用该方法.
强制停止不能用AlarmManager
这种方式测试接收器吗?似乎有一些回应称它不起作用,有些人说应该这样做.
如果没有,有没有办法测试这个?