關於鬧鐘系統中,intent資料傳遞出錯的問題修復

2021-07-25 23:12:38 字數 1194 閱讀 4432

intent intent = new intent(context, myreceiver.class);

intent.setaction(myreceiver.acion_result_yes);

intent.putextra("result", result);

pendingintent pi = pendingintent.getbroadcast(context, 0, intent, 0);

alarmmanager am = (alarmmanager) context.getsystemservice(activity.alarm_service);

am.setexact(alarmmanager.rtc_wakeup, remindtime, pi);

鬧鐘設定的**基本上是這樣的,但是如果在啟動的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傳送資料的方法正常接收。

即:pendingintent pi = pendingintent.getbroadcast(context, 0, intent, pendingintent.flag_update_current);

Android中關於鬧鐘提醒的解決方案

來看分析和講解之前,先看看效果吧,效果圖如下 設定介面 鬧鐘提醒介面 對於alarmmanager裡的方法我就不逐一介紹了,如果都介紹講完估計就天黑了。alarmmanager這個類提供對系統鬧鐘服務的訪問介面。在api 19 以前,alarmmanager的常用方法有三個 set int type...

關於Intent傳遞資料的幾種方法

1 首先是activity的簡單跳 activity的切換一般是通過intent來實現的,intent是乙個activity到達另乙個activity的引路者,它描述了起點 當前activity 和終點 目標activity 乙個簡單intent實現如下 intent intent new inte...

RS 關於資料探勘中的推薦系統

一 推薦系統概述和常用評價指標 1.1 推薦系統的特點 1 重要性ui 資料 演算法,就是推薦系統中一味追求先進的演算法算是個誤區,通常 研究類的推薦方法有的帶有很多的假設限制,有的考慮工程實現問題較少,推薦系統需要大量的資料整理和轉化,同時更需要考慮公司業務特性以及與現有系統的整合,方能形成推薦系...