我有些疑慮,我想清楚有關Android中的AlarmManager類。
我有一個需要的應用程序:有關AlarmManager的疑問 - Android
- 允許用戶設定的時間。
- 開始報警。
- 然後,即使應用程序已關閉,它應該在預設時間啓動並在主要活動中執行某個功能(如
button.performClick()
)。
所以,我已經成功地創建了一個名爲alarm.java
的活動,在res\layout
創建佈局並將其添加到AndroidManifest.xml
。另外,我已經成功地設定鬧鐘在我alarm.java
類如下:現在
onCreate(){
alarm = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
intent = new Intent(context, MyActivity.class);
pi = PendingIntent.getBroadcast(this.getApplicationContext(), ALARM_ID, intent, 0);
}
onClick(){
cal.setTimeInMillis(System.currentTimeMillis());
cal.set(Calendar.HOUR_OF_DAY, hour);
cal.set(Calendar.MINUTE, minute);
alarm.setInexactRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pi);
Toast.makeText(getApplicationContext(), "Alarm Set For " + hour + ":" + minute + " " + ampm, Toast.LENGTH_LONG).show();
}
,在我MyActivity.java
類,這是主要的活動,我已經添加了BroadcastReceiver
public BroadcastReceiver AlarmReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
/*This is the part I got from SO for starting an activity from `BroadcastReceiver`
Intent i = new Intent();
i.setClassName("com.kanishka.nightstalker.homeautomation", "com.kanishka.nightstalker.homeautomation.MainActivity");
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(i);*/
Toast.makeText(getApplicationContext(), "APP STARTED", Toast.LENGTH_LONG).show();
button.performClick();
}
};
顯然,這種方法不起作用,因爲我看不到Toast
在經過的時間後彈出。我有點理解這個問題是什麼,我應該使用Service
這個。但據我所知,AlarmManager
本身在後臺運行,並應在經過的時間觸發BroadcastReceiver
的MyActivity.java
。我哪裏錯了?
關於(5),註釋掉的部分會以任何方式提供幫助嗎?我正在開始活動,然後開始行動。 至於(2),我在設定報警之前檢查時間是未來的。 請詳細說明第(4)和(3)點。 – 2014-09-13 00:02:59
@KanishkaGanguly:「關於(5),註釋部分會以任何方式提供幫助嗎?」 - 這將開始一項活動。它不允許你點擊它中的一個按鈕。 「我正在檢查時間是在未來設置我的鬧鐘之前」 - 而不是根據您的問題中的代碼。 「請詳細說明第(4)和(3)點」 - 你需要解釋你不瞭解的內容。 – CommonsWare 2014-09-13 00:15:10
好的,這是我採取的解決問題的步驟。 1.向'alarm.java'添加'BroadcastReceiver' 2.將'BroadcastReceiver'添加到'AndroidManifest.xml' 3.使用註釋掉的行來調用我的'MyActivity.java'使用該意圖'i '創造。 4.讀取'MyActivity'中的意圖,在所有內容初始化後執行點擊操作。 那很好嗎? – 2014-09-13 00:24:58