這是我看到的最奇怪的情況之一。Android。報警管理器。重複報警不會觸發,並在一段時間後立即觸發所有報警
我有一個應用程序每5分鐘執行一次任務。我設置使用下面的代碼重複報警:
public static final int INTERVAL_SECONDS = 300;
public void SetAlarm(Context context)
{
AlarmManager am=(AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
Intent i = new Intent(context, Alarm.class);
PendingIntent pi = PendingIntent.getBroadcast(context, 0, i, 0);
am.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), 1000 * INTERVAL_SECONDS, pi); // Millisec * Second * Minute
}
因此,每隔五分鐘,我想到的是,下面的代碼將運行:
@Override
public void onReceive(Context context, Intent intent)
{
PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "");
wl.acquire();
Intent pper = new Intent(context, PushPullService.class);
context.startService(pper);
Log.d("AlarmReceiver", "Called context.startService from AlarmReceiver.onReceive");
wl.release();
}
我的應用程序清單中的以下權限:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
我看到很奇怪的東西。我在意圖的開頭添加了寫入日誌文件。我看到有一種奇怪的模式:
每5分鐘有一些事件(在意向過程的開始時打印到日誌中),但有時我在某個時間段內沒有在日誌文件中看到任何內容,然後我看到許多事件一次。一起(一個接一個地)運行的事件的數量似乎是在沒有事件發生的時間段內我期望出現的事件的數量。
有什麼建議嗎?會是什麼呢?我沒有發現這種行爲的任何證據。也許這是在我自己的設備中的東西?
編輯: 當廣播接收器被激發時,我在日誌中添加了一個打印。我看到每隔五分鐘收到一次廣播,但是這個意圖沒有被執行!
我還添加了一個唯一的ID給每個意向,如由伊爾凡·艾哈邁德提供的,但它並沒有解決這個問題:
Intent i = new Intent(context, Alarm.class);
i.setData(Uri.parse(String.valueOf(System.currentTimeMillis())));
PendingIntent pi = PendingIntent.getBroadcast(context, 0, i, Intent.FLAG_GRANT_READ_URI_PERMISSION);
我認爲問題是廣播接收器可以發佈廣播接收器類和清單文件。 – Harshid
你能解決你的問題嗎?我有類似的問題,找不到解決方案 – Marty