我有待定的意圖,設置警報,並從數據庫中獲取參數,如行ID和時間。我想取消警報,所以我會通過發送另一個掛起的意圖與相同的信息,然後取消(我想從不同的文件中取消它)。我只允許在任何時候設置一個鬧鐘,因爲這是我的應用程序的工作方式,因爲從該待處理的意圖中只設置了一個鬧鐘,無論如何我都可以取消所有該意圖?Android正在等待意圖?
0
A
回答
0
我有待定的意圖,設置警報,它從數據庫中獲取參數,如行ID和時間。
PendingIntent
上沒有「參數」。我將把這解釋爲「額外」的含義。
我想取消警報,所以我會這樣做,通過發送另一個掛起的意圖與相同的信息,然後取消(我想從不同的文件中取消它)。
它不是「發送」而是「創建」。否則,是的,這是正確的。
我可以只取消所有意圖?
只有一個警報。
在報警安排方面,附加並不重要。如果在PendingIntent
(PI1)中包含Intent
(I1)並使用它來安排警報,並且稍後如果使用相同的組件/動作/數據/類型創建Intent
(I2),請將其包裝在PendingIntent
( PI2)和cancel()
報警,它將取消PI1報警。同樣,如果您使用PI2安排新的警報,它將刪除舊的PI1警報。
3
因爲我相信代碼樣本中傳達出點,見下圖:
/*
* An alarm can invoke a broadcast request
* starting at a specified time and at
* regular intervals.
*/
public void sendRepeatingAlarm()
{
Calendar cal = Utils.getTimeAfterInSecs(30);
String s = Utils.getDateTimeString(cal);
this.mReportTo.reportBack(tag, "Schdeduling Repeating alarm in 5 sec interval starting at: " + s);
//Get an intent to invoke TestReceiver class
Intent intent = new Intent(this, TestReceiver.class);
intent.putExtra("message", "Repeating Alarm");
PendingIntent pi = this.getDistinctPendingIntent(intent, 2);
// Schedule the alarm!
AlarmManager am = (AlarmManager) this.getSystemService(Context.ALARM_SERVICE);
am.setRepeating(AlarmManager.RTC_WAKEUP,
cal.getTimeInMillis(),
5*1000, //5 secs
pi);
}
protected PendingIntent getDistinctPendingIntent(Intent intent, int requestId)
{
PendingIntent pi =
PendingIntent.getBroadcast(
this, //context
requestId, //request id
intent, //intent to be delivered
0);
//pending intent flags
//PendingIntent.FLAG_ONE_SHOT);
return pi;
}
/*
* An alarm can be stopped by canceling the intent.
* You will need to have a copy of the intent
* to cancel it.
*
* The intent needs to have the same signature
* and request id.
*/
public void cancelRepeatingAlarm()
{
//Get an intent to invoke TestReceiver class
Intent intent = new Intent(this, TestReceiver.class);
//To cancel, extra is not necessary to be filled in
//intent.putExtra("message", "Repeating Alarm");
PendingIntent pi = this.getDistinctPendingIntent(intent, 2);
// Schedule the alarm!
AlarmManager am = (AlarmManager) this.getSystemService(Context.ALARM_SERVICE);
am.cancel(pi);
}
相關問題
- 1. 取消android等待意圖
- 2. 正在等待意圖獲得服務
- 3. 正在等待意圖廣播唯一
- 4. android等待意圖垃圾回收
- 5. android等待意圖通知問題
- 6. Android等待瀏覽器意圖完成
- 7. 循環等待意圖結果(Java Android)
- 8. Android線程正在等待
- 9. intent.putExtra()在等待意圖不起作用
- 10. 在AppWidgets中處理(等待)意圖的正確方式
- 11. 在android中等待
- 12. 等待getAuthToken意圖結果的服務
- 13. Alexa意圖並未等待api響應
- 14. 等待意圖通知不起作用
- 15. 正在等待用JQuery加載圖像
- 16. Android:等待意圖沒有通過多次鬧鐘打盹
- 17. Android應用程序重啓,等待意圖(BEHAVIOR)
- 18. 從等待中的意圖接收廣播的Android問題
- 19. 用等待的意圖和意圖收聽NFC
- 20. 爲什麼我不能去意圖而不是等待意圖?
- 21. 正確等待等待元素消失?
- 22. 活動等待意向
- 23. 意外的結果等待
- 24. 正在忙着等待
- 25. 線程和正在等待
- 26. 承諾正在等待
- 27. SerializeObject正在等待永久
- 28. C#正在等待事件
- 29. AsyncBridge.Net35.0.2.0,正在等待任務
- 30. 線程正在等待ThreadPoolExecutor
非常感謝,你的答案被清除了很多關於如何取消:) – Bob 2011-04-25 23:53:03