私は内部クラスのブロードキャスト受信機を使用してウォッチドッグ機能を作ろうとしています。親クラスでコンストラクタ内にブロードキャストレシーバを登録しましたが、onReceiveクラスは決してトリガされません。BroadcastReceiver内部クラスはトリガーされません
どうすればこの問題を解決できますか?ありがとうございました。
ウォッチドッグ・クラス:
public class WatchDog {
private final String TAG = getClass().getSimpleName();
private static final String RECEIVER_WATCHDOG = "com.example.liviu.test_broadcastreceiver.receiver";
private final static String ACTION_WATCHDOG = "com.example.liviu.test_broadcastreceiver.action.watchdog";
private final static int ID_WATCHDOG = 40856342;
private final static int mTimeout = 1000;
public WatchDog (Context context) {
Log.d(TAG, ":::::::::::: Watchdog CONSTRUCTOR");
IntentFilter intentFilter = new IntentFilter(RECEIVER_WATCHDOG);
BroadcastReceiver receiver = new WatchDogReceiver();
context.registerReceiver(receiver, intentFilter);
setWatchdogTimer(context, true, mTimeout);
}
final class WatchDogReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Log.d(TAG, ":::::::::::: Watchdog received - ");
setWatchdogTimer(context, true, mTimeout);
}
}
public void setWatchdogTimer(Context context, boolean set, int timeout) {
Log.d(TAG, ":::::::::::: Watchdog START");
Intent intent = new Intent(context, WatchDogReceiver.class);
intent.setAction(ACTION_WATCHDOG);
PendingIntent alarmIntent = PendingIntent.getBroadcast(context, ID_WATCHDOG, intent, PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
if (set) {
alarmManager.set(AlarmManager.RTC, System.currentTimeMillis() + timeout, alarmIntent);
} else {
alarmManager.cancel(alarmIntent);
}
}
}
とMainActivityクラス:
public class MainActivity extends AppCompatActivity {
private final String TAG = getClass().getSimpleName();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.d(TAG, ">>>>>>>>>>>> Activity START");
new WatchDog(getApplicationContext());
}
は}
Logcatのみ表示されている:
05-02 18:11:10.197 20415-20415/com.example.liviu.test_broadcastreceiver D/MainActivity: >>>>>>>>>>>> Activity START
05-02 18:11:10.197 20415-20415/com.example.liviu.test_broadcastreceiver D/WatchDog: :::::::::::: Watchdog CONSTRUCTOR
あなたの受信機は公開されていません。あなたのマニフェストに受信機があることを確認します。 –
放送を受信者にどのくらい正確に送信していますか?あなたが現在質問にあるコードから、それは受信者に何かを送るようには見えないので、それらのログは私が知る限り予想される結果です。 –
繰り返しアラームを設定しようとしていますか? –