我正在嘗試使用Android AlarmManager。問題是,它會彼此接連發生兩次。AlarmManager觸發兩次
public class ScheduleSomething {
public static void schedule(Pojo pojo) throws JsonProcessingException {
final ObjectMapper mapper = new ObjectMapper();
final String pojoAsJson = mapper.writeValueAsString(pojo);
final Intent alarmIntent = new Intent(MyApplication.getAppContext(),
PojoAlarmReceiver.class);
alarmIntent.putExtra(POJO_AS_JSON, pojoAsJson);
final PendingIntent pi = PendingIntent.getBroadcast(MyApplication.getAppContext(), 0,
alarmIntent, PendingIntent.FLAG_ONE_SHOT);
am.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + pojo.getScheduledTime() + 10L, pi);
}
}
public class AlarmReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// do stuff. onReceive() is being called twice, every time.
}
}
Ofcourse我已籤,如果我叫時間表(POJO POJO)方法兩次,但不幸的是,這不是它。現在,我爲此工作但遲早,我想以一種乾淨的方式解決這個問題。 最好的問候,並希望有人知道什麼是錯的。
完全卸載你的應用程序。使用**'adb shell dumpsys alarm' **確認您不再安排任何警報。安裝您的應用程序並運行您的代碼來設置警報。然後再次使用**'adb shell dumpsys alarm' **。如果您在該應用中看到多個條目,那麼您正在安排多個警報。如果沒有,找出你的應用程序還有什麼觸發你的'AlarmReceiver'。 – CommonsWare
有一大堆計劃,但沒有提及我的包名稱的單個Intentrecord,其中大多數是指com.google.android.calendar和com.google.android.gms和其他與Google服務相關的東西。雖然這樣做,我意識到我不註冊一個意向過濾器,爲我自己的包標識符過濾。我想這是根本原因,對吧? –
上述評論附錄:這正是發生了什麼問題。每當有什麼值得截取的東西進來時,BC的觸發器就會進來。我將盡快更新我的代碼。 –