3 回答

TA貢獻(xiàn)1841條經(jīng)驗(yàn) 獲得超3個(gè)贊
“一些示例代碼”并非如此簡(jiǎn)單AlarmManager
。
這是一個(gè)顯示以下設(shè)置的片段AlarmManager
:
AlarmManager mgr=(AlarmManager)context.getSystemService(Context.ALARM_SERVICE);Intent i=new Intent(context, OnAlarmReceiver.class);PendingIntent pi=PendingIntent.getBroadcast(context, 0, i, 0);mgr.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime(), PERIOD, pi);
在這個(gè)例子中,我正在使用setRepeating()
。如果你想要一次性警報(bào),你就可以使用set()
。請(qǐng)務(wù)必在與初始參數(shù)中使用的時(shí)間基準(zhǔn)相同的時(shí)間內(nèi)為警報(bào)提供時(shí)間set()
。在我上面的例子中,我正在使用AlarmManager.ELAPSED_REALTIME_WAKEUP
,所以我的時(shí)間基準(zhǔn)是SystemClock.elapsedRealtime()
。
這是一個(gè)展示這種技術(shù)的大型示例項(xiàng)目。

TA貢獻(xiàn)1821條經(jīng)驗(yàn) 獲得超5個(gè)贊
您需要做的是首先創(chuàng)建您需要安排的意圖。然后獲取該intent的pendingIntent。您可以安排活動(dòng),服務(wù)和廣播。安排活動(dòng),例如MyActivity:
Intent i = new Intent(getApplicationContext(), MyActivity.class); PendingIntent pi = PendingIntent.getActivity(getApplicationContext(),3333,i, PendingIntent.FLAG_CANCEL_CURRENT);
將此pendingIntent提供給alarmManager:
//getting current time and add 5 seconds in it Calendar cal = Calendar.getInstance(); cal.add(Calendar.SECOND, 5); //registering our pending intent with alarmmanager AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE); am.set(AlarmManager.RTC_WAKEUP,cal.getTimeInMillis(), pi);
現(xiàn)在MyActivity將在應(yīng)用程序啟動(dòng)5秒后啟動(dòng),無論您停止應(yīng)用程序還是設(shè)備進(jìn)入睡眠狀態(tài)(由于RTC_WAKEUP選項(xiàng))。您可以閱讀完整的示例代碼調(diào)度活動(dòng),服務(wù)和廣播#Android
添加回答
舉報(bào)