當要設定乙個鬧鐘時,可以把資料放在intent裡,再用intent物件生成乙個pendingintent物件,然後用alarmmanager 來邦定pendingintent物件設定鬧鐘,具體**如下:
intent intent = new intent(context, alarmreceiver.class);
intent.putextra("id", alarm.getid());
intent.putextra("weekday", getcurrentweekday());
pendingintent pendingintent = pendingintent.getbroadcast(context, alarm.getid(), intent, 0);
alarmmanager alarmmanager = (alarmmanager) context.getsystemservice(context.alarm_service);
alarmmanager.set(alarmmanager.rtc_wakeup, triggerattime, pendingintent);
鬧鐘設定的**基本上是這樣的,但是如果在啟動的broadcast中接收intent過來的資料,有時會得到乙個null值,也就是說,根本沒有資料傳過來。
因此檢視官方api,發現 pendingintent pendingintent = pendingintent.getbroadcast(context, alarm.getid(), intent, 0);的最後乙個引數引數是int flag,這個值可以是flag_one_shot, flag_no_create, flag_cancel_current, flag_update_current
簡單翻譯一下:
int flag_cancel_current:如果該pendingintent已經存在,則在生成新的之前取消當前的。
int flag_no_create:如果該pendingintent不存在,直接返回null而不是建立乙個pendingintent.
int flag_one_shot:該pendingintent只能用一次,在send()方法執行後,自動取消。
int flag_update_current:如果該pendingintent已經存在,則用新傳入的intent更新當前的資料。
我們需要把最後乙個引數改為pendingintent.flag_update_current,這樣在啟動的activity裡就可以用接收intent傳送資料的方法正常接收。
intent intent = new intent(context, alarmreceiver.class);
intent.putextra("id", alarm.getid());
intent.putextra("weekday", getcurrentweekday());
pendingintent pendingintent = pendingintent.getbroadcast(context, alarm.getid(), intent,endingintent.flag_update_current);
alarmmanager alarmmanager = (alarmmanager) context.getsystemservice(context.alarm_service);
alarmmanager.set(alarmmanager.rtc_wakeup, triggerattime, pendingintent);
Intent和PendingIntent的區別
intent英文意思是意圖,pending表示即將發生或來臨的事情。pendingintent這個類用於處理即將發生的事情。比如在通知notification中用於跳轉頁面,但不是馬上跳轉。intent 是及時啟動,intent 隨所在的activity 消失而消失。intent一般是用作activ...
PendingIntent用法注意
pendingintent.flag cancel current pendingintent可以由三種動作得到相應的例項 getactivity context,int,intent,int getactivities context,int,intent,int getbroadcast con...
Intent和PendingIntent的區別
intent英文意思是意圖,pending表示即將發生或來臨的事情。pendingintent這個類用於處理即將發生的事情。比如在通知notification中用於跳轉頁面,但不是馬上跳轉。intent 是及時啟動,intent 隨所在的activity 消失而消失。intent一般是用作activ...