我一直在試圖發現這裏的問題,但我似乎無法...我的onReceive似乎並沒有被調用,這是我有:動態註冊的BroadcastReceiver實例不會觸發?
public abstract class NoUpdatesTimer extends BroadcastReceiver {
private Context context;
private PendingIntent pendingIntent;
public NoUpdatesTimer(Context context) {
this.context = context;
Intent intent = new Intent(Constants.ALARM_NO_LOC_UPDATES);
pendingIntent = PendingIntent.getBroadcast(context, 0, intent, 0);
context.registerReceiver(this, new IntentFilter(Constants.ALARM_NO_LOC_UPDATES));
}
public void scheduleCheck(long delayMillis) {
AlarmManager alarmManager = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
alarmManager.setExactAndAllowWhileIdle(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + delayMillis, pendingIntent);
}
@Override
public void onReceive(Context context, Intent intent) {
...
}
}
有了一些調試,我驗證scheduleChecking被調用,但onReceive方法未被調用。我還試圖從一個殼觸發此代碼,用:
adb shell am broadcast -a rsg.ms.7
(其中Constants.ALARM_NO_LOC_UPDATES是 「rsg.ms.7」)。
你能告訴我該怎麼改變,所以接受被稱爲?