我發現了很多類似的問題,但它們太複雜(太多代碼),至少我認爲。簡單的AlarmManager示例在10分鐘內觸發一個活動
這件事可以在幾行代碼中完成嗎?我想在10分鐘內開出一個活動(就這麼說),就是這樣。謝謝。
我發現了很多類似的問題,但它們太複雜(太多代碼),至少我認爲。簡單的AlarmManager示例在10分鐘內觸發一個活動
這件事可以在幾行代碼中完成嗎?我想在10分鐘內開出一個活動(就這麼說),就是這樣。謝謝。
This blog post描述正是你所期待的。
這個功能我用套或者根據「設置」參數
public static void SetAlarm(Context c, long AlarmTime, int ItemID, String Message, Boolean Set) {
Intent intent = new Intent(c, AlarmReceiver.class);
intent.putExtra("Message", Message);
intent.putExtra("ItemID", ItemID);
PendingIntent sender = PendingIntent.getBroadcast(c, 8192 + ItemID, intent, PendingIntent.FLAG_UPDATE_CURRENT);
// Clear the seconds to 0 for neatness
Calendar ca = Calendar.getInstance();
ca.setTimeInMillis(AlarmTime);
ca.set(Calendar.SECOND, 0);
AlarmTime = ca.getTimeInMillis();
// Get the AlarmManager service
AlarmManager am = (AlarmManager) c.getSystemService(Context.ALARM_SERVICE);
if (Set) {
am.set(AlarmManager.RTC_WAKEUP, AlarmTime, sender);
} else {
am.cancel(sender);
}
}
你會那麼需要的廣播接收器來處理報警,做什麼是你想做的事取消報警。
public class AlarmReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
try {
Bundle bundle = intent.getExtras();
String Message = bundle.getString("Message");
int ItemID = bundle.getInt("ItemID");
// Do what you want to do, start an activity etc
} catch (Exception e) {
e.printStackTrace();
}
}
}
要10分鐘(比方說)使用此代碼
AlarmManager alarmMgr = (AlarmManager)getSystemService(ALARM_SERVICE);
Intent intent = new Intent(this, ShortTimeEntryReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
alarmMgr.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(),10*60*1000, pendingIntent);
要啓動活動
public class ShortTimeEntryReceiver extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
try {
Bundle bundle = intent.getExtras();
String message = bundle.getString("alarm_message");
// Your activity name
Intent newIntent = new Intent(context, ReminderPopupMessage.class);
newIntent.putExtra("alarm_message", message);
newIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(newIntent);
} catch (Exception e) {
e.printStackTrace();
}
}
}
清單檔案中的添加設置報警以下
<receiver android:name=".ShortTimeEntryReceiver"
android:enabled="true"
android:process=":remote">
</receiver>
你解決了你的問題... – GoCrazy 2012-07-26 15:27:38
我要爲我的RestApi java微服務創建一個AlarmManagement框架。我可以使用這個andriod應用程序AlarmManager嗎?還是在java/Spring框架中有類似的AlarmManager?這可能是一個非常愚蠢的基本問題。但我所有的谷歌搜索只顯示android AlarmManger。 – user2617611 2017-01-26 19:28:02