Android之AlarmManager

來源:互聯網
上載者:User

標籤:

  Android平台中,Alarm Manager Service控制著鬧鐘和喚醒功能。和其他系統服務一樣,提供了一個輔助管理類-AlarmManager,我們只需要使用AlarmManager即可調用Alarm Manager Service。

  在AlarmManager提供了如下方法:

1、void cancel(pendingIntent operatioin):取消一個登入的定時器

2、void set(int type,long triggerAtTime,PendingIntent operation):設定一個新的定時器。

3、void setInecactRepeating(int type,long triggerAtMillis,long intervalMills,PendingIntent operation):設定一個不精確的重複類型的定時器。

4、void setRepeating(int type,long triggerAtMills,long intervalMills,PendingIntent operation):設定一個重複類型的定時器

5、void setTime(long millis):設定系統時鐘時間。

6、void setTimeZone(String timeZone):設定時區

在上面設定時鐘的方法中,第一個參數要設定一個鬧鐘的類型,在系統中提供了如下類型:

1、ELAPSED_REALTIME:此類型的鬧鐘在系統休眠狀態下是停用,不能喚醒系統。使用的時間是相對於系統的啟動時間,該時間可以通過SystemClock.elapsedRealTime()來擷取。

2、ELAPSED_REALTIME_WAKEUP:此類型的鬧鐘在系統休眠狀態下是可用的,使用的時間是相對於系統的啟動時間。

3、RTC:此類型在系統休眠狀態下是停用,使用的是真即時間。

4、RTC_WAKEUP:此類型在系統休眠狀態下可用,使用的是真即時間。

在上面的設定可重複的時鐘的方法中,intervalMillis參數的取值可以如下:

1、INTERVAL_FIFTEEN_MINUTES 

2、INTERVAL_HALF_HOUR 

3、INTERVAL_HOUR 

4、INTERVAL_HALF_DAY 

5、INTERVAL_DAY

       具體如何使用AlarmManager呢,我們通過一個案例來說明。

public class AlarmManagerActivity extends ActionBarActivity {    private AlarmManager alarmManager;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_alarm_manager);        alarmManager = (AlarmManager)getSystemService(Context.ALARM_SERVICE);        IntentFilter filter = new IntentFilter("com.jredu.action.MyAlarm");        registerReceiver(receiver,filter);    }    public void setClock(View v){        Intent i = new Intent("com.jredu.action.MyAlarm");        PendingIntent intent=                PendingIntent.getBroadcast(this,0,i,PendingIntent.FLAG_UPDATE_CURRENT);        alarmManager.setRepeating(AlarmManager.RTC_WAKEUP,                System.currentTimeMillis(),                30*1000,intent);    }    public void cancleClock(View v){        Intent i = new Intent("com.jredu.action.MyAlarm");        PendingIntent intent=                PendingIntent.getBroadcast(this,0,i,PendingIntent.FLAG_UPDATE_CURRENT);        alarmManager.cancel(intent);    }    private BroadcastReceiver receiver = new BroadcastReceiver() {        @Override        public void onReceive(Context context, Intent intent) {            if(intent.getAction().equals("com.jredu.action.MyAlarm")){                Toast.makeText(AlarmManagerActivity.this,"這是我設定的鬧鐘!",Toast.LENGTH_LONG).show();            }        }    };    @Override    protected void onDestroy() {        super.onDestroy();        unregisterReceiver(receiver);    }}

運行如下:

 

傑瑞教育
出處:http://www.cnblogs.com/jerehedu/ 
著作權聲明:本文著作權歸煙台傑瑞教育科技有限公司和部落格園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文串連,否則保留追究法律責任的權利。
技術諮詢: 

Android之AlarmManager

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.