国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

一個簡單的Android定時任務

2019-12-12 02:39:51
字體:
來源:轉載
供稿:網友

使用AlarmManager來實現定時提醒,它提供了一種訪問系統鬧鐘服務的方式。在全局中,達到設定的時間,
在它上面注冊的一個Intent將會被廣播,接著啟動相應的應用程序,可以通過自定義Receiver來實現。

首先要在AndroidManifest.xml中進行注冊

<receiver android:name=".AlarmReceiver">      <intent-filter>        <action android:name="CLOCK" />      </intent-filter></receiver>

自定義一個鬧鐘接收器,getIntExtra可用于接受發送方putExtra傳過來的值,Intent i = new Intent(“CLOCK”)其中的“CLOCK”是注冊時使用的seceiver的name。

public class AlarmReceiver extends BroadcastReceiver {  private int _id;  private String str;  @Override  public void onReceive(Context context, Intent intent) {    _id = intent.getIntExtra("ID", -1);    Intent i = new Intent("CLOCK");    i.setClass(context, NoteEditor.class);    i.putExtra("ID", _id);    String str = intent.getStringExtra("NOTE");    Toast.makeText( context, str, Toast.LENGTH_SHORT).show();    i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);    context.startActivity(i);  }}

時間的獲取通過DatePickerDialog和TimePickerDialog,需要注意的是DatePickerDialog的月份是從0開始。將獲取的數據放在Calendar類中,其中月份的存儲也是從0開始。

final AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE);Calendar alarmCalendar = Calendar.getInstance();
alarmCalendar.set(mYear, mMonth-1, mDay, mHour, mMinute,0);Intent i = new Intent("CLOCK");i.setClass(this, AlarmReceiver.class);i.putExtra("ID", _id);String note="notes";i.putExtra("NOTE",note);

設置一個PendingIntent對象作為鬧鐘響應的對象,發送廣播。第二個參數可以為0,但是因為做的是一次性的鬧鐘,如果為0的話,新設的鬧鐘會將之前設的鬧鐘覆蓋掉。FLAG_UPDATE_CURRENT: 如果希望獲取的PendingIntent對象與已經存在的PendingIntent對象相比,如果只是Intent附加的數據不同, 那么當前存在的PendingIntent對象不會被取消,而是重新加載新的Intent附加的數據。

PendingIntent pi = PendingIntent.getBroadcast(this, _id,i,PendingIntent.FLAG_UPDATE_CURRENT);

發送鬧鐘請求,設置在alarmCalendar.getTimeInMillis()時間啟動由pi指定的組件。
第一個參數用來指定定時服務的類型,主要可選以下值:

AlarmManager.ELAPSED_REALTIME:睡眠狀態下不可用,該狀態下鬧鐘使用相對時間。
AlarmManager.ELAPSED_REALTIME_WAKEUP:在睡眠狀態下會喚醒系統并執行提示功能,也使用相對時間。
AlarmManager.RTC:該狀態睡眠狀態下不可用,使用絕對時間,即當前系統時間。
AlarmManager.RTC_WAKEUP:鬧鐘在睡眠狀態下會喚醒系統并執行提示功能,該狀態下鬧鐘也使用絕對時間。

am.set(AlarmManager.RTC_WAKEUP, alarmCalendar.getTimeInMillis(), pi);

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 馆陶县| 满城县| 益阳市| 綦江县| 炎陵县| 永登县| 上犹县| 隆昌县| 宜章县| 安仁县| 莒南县| 柳州市| 吴旗县| 太原市| 吴忠市| 昆明市| 渑池县| 昌黎县| 华蓥市| 宁河县| 南川市| 西吉县| 永和县| 景宁| 仪陇县| 台前县| 阿拉善盟| 巴青县| 油尖旺区| 荣成市| 库伦旗| 宜兰市| 盐源县| 铅山县| 新疆| 上犹县| 册亨县| 交城县| 离岛区| 东光县| 乌拉特后旗|