91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Android實現每天定時提醒功能

發布時間:2020-09-06 04:57:50 來源:腳本之家 閱讀:718 作者:F-凡 欄目:移動開發

這個是設置定時提醒的功能,即設置幾點幾分后提醒,用的是給系統設置個時間點,當系統時間到達設置的時間點的時候就會給我們發送一個廣播,然后達到時間提醒功能

網上找了很多,遇到了很多坑,經過摸索出來的,比如下面設置重復時間的第二個參數,網上有很多說是執行提醒延時多少毫秒執行,我用的刷了MIUI的三星手機測試怎么都不對,經過摸索測試才發現,原來不是,原來那個參數是設定的時間點的毫秒值!好了,不多說,看代碼:

/**
 * 開啟提醒
 */
 private void startRemind(){
   //得到日歷實例,主要是為了下面的獲取時間
   mCalendar = Calendar.getInstance();
   mCalendar.setTimeInMillis(System.currentTimeMillis());
   //獲取當前毫秒值
   long systemTime = System.currentTimeMillis();
   //是設置日歷的時間,主要是讓日歷的年月日和當前同步
   mCalendar.setTimeInMillis(System.currentTimeMillis());
   // 這里時區需要設置一下,不然可能個別手機會有8個小時的時間差
   mCalendar.setTimeZone(TimeZone.getTimeZone("GMT+8"));
   //設置在幾點提醒 設置的為13點
   mCalendar.set(Calendar.HOUR_OF_DAY, 13);
   //設置在幾分提醒 設置的為25分
   mCalendar.set(Calendar.MINUTE, 25);
   //下面這兩個看字面意思也知道
   mCalendar.set(Calendar.SECOND, 0);
   mCalendar.set(Calendar.MILLISECOND, 0);
   //上面設置的就是13點25分的時間點
   //獲取上面設置的13點25分的毫秒值
   long selectTime = mCalendar.getTimeInMillis();

   // 如果當前時間大于設置的時間,那么就從第二天的設定時間開始
   if(systemTime > selectTime) {
     mCalendar.add(Calendar.DAY_OF_MONTH, 1);
   }
  //AlarmReceiver.class為廣播接受者
   Intent intent = new Intent(MainActivity.this, AlarmReceiver.class);
   PendingIntent pi = PendingIntent.getBroadcast(MainActivity.this, 0, intent, 0);
   //得到AlarmManager實例
   AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE);
  //**********注意!!下面的兩個根據實際需求任選其一即可*********
   /**
   * 單次提醒
   * mCalendar.getTimeInMillis() 上面設置的13點25分的時間點毫秒值
   */
   am.set(AlarmManager.RTC_WAKEUP, mCalendar.getTimeInMillis(), pi);

   /**
   * 重復提醒
   * 第一個參數是警報類型;下面有介紹
   * 第二個參數網上說法不一,很多都是說的是延遲多少毫秒執行這個鬧鐘,但是我用的刷了MIUI的三星手機的實際效果是與單次提醒的參數一樣,即設置的13點25分的時間點毫秒值
   * 第三個參數是重復周期,也就是下次提醒的間隔 毫秒值 我這里是一天后提醒
   */
   am.setRepeating(AlarmManager.RTC_WAKEUP, mCalendar.getTimeInMillis(), (1000 * 60 * 60 * 24), pi);
 }
/**
 * 關閉提醒
 */
 private void stopRemind(){
   Intent intent = new Intent(MainActivity.this, AlarmReceiver.class);
   PendingIntent pi = PendingIntent.getBroadcast(MainActivity.this, 0,
       intent, 0);
   AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE);
   //取消警報
   am.cancel(pi);
   Toast.makeText(this, "關閉了提醒", Toast.LENGTH_SHORT).show();
 }

上面第一個參數的詳解:

AlarmManager.RTC,硬件鬧鐘,不喚醒手機(也可能是其它設備)休眠;當手機休眠時不發射鬧鐘。

AlarmManager.RTC_WAKEUP,硬件鬧鐘,當鬧鐘發躰時喚醒手機休眠;

AlarmManager.ELAPSED_REALTIME,真實時間流逝鬧鐘,不喚醒手機休眠;當手機休眠時不發射鬧鐘。

AlarmManager.ELAPSED_REALTIME_WAKEUP,真實時間流逝鬧鐘,當鬧鐘發躰時喚醒手機休眠;

RTC鬧鐘和ELAPSED_REALTIME最大的差別就是前者可以通過修改手機時間觸發鬧鐘事件,后者要通過真實時間的流逝,即使在休眠狀態,時間也會被計算。

然后寫廣播接受者:

public class AlarmReceiver extends BroadcastReceiver {
  @Override
  public void onReceive(Context context, Intent intent) {
    //當系統到我們設定的時間點的時候會發送廣播,執行這里
  }
}

最后別忘了給廣播接受者配置清單文件:

<receiver
  android:name=".receiver.AlarmReceiver"
  android:process=":remote"
  />

使用方法就直接調用啟動提醒或關閉提醒就行

以上就是本文的全部內容,希望本文的內容對大家的學習或者工作能帶來一定的幫助,同時也希望多多支持億速云!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

乐陵市| 宝兴县| 额尔古纳市| 特克斯县| 巴里| 诏安县| 兴文县| 蓝山县| 修水县| 牙克石市| 将乐县| 永川市| 察雅县| 万州区| 澄城县| 湾仔区| 金沙县| 登封市| 濉溪县| 民权县| 诸城市| 邵阳县| 张掖市| 万年县| 东丽区| 佳木斯市| 泗水县| 宁德市| 河北省| 孝感市| 临颍县| 岳阳县| 锡林浩特市| 灵武市| 屯昌县| 科技| 永嘉县| 广宗县| 开封市| 三河市| 抚州市|