2
在我的應用程序中,我在下面的這個方法中傳遞了一個milleseconds的時間,但是當調用這個方法時,我在清單中爲這個意圖註冊的BroadCastReciever被立即調用,關閉音頻播放,甚至在第二個開始時關閉。 (BroadcastReciever的目的是停止音頻播放,但在選定的時間通過以下方法傳遞給警報管理器...)爲什麼使用AlarmManager爲PendingIntent設置時,請求的組件立即被調用?
我試過了類似的配置,包括getService,但是即使這個組件被立即調用當爲該組件設置一個警報管理器時。
我偶爾會得到帶有空指針異常的ANR,因爲停止播放的BroadcastReciever會嘗試停止尚未初始化的MediaPlayer對象,因爲在設置時會立即調用暫停播放的暫停內容。
private void makeAlarm(long timeInFuture){
Intent INTENT = new Intent("myapp.stopplayback");
AlarmManager alarmManager=(AlarmManager)this.getSystemService(Context.ALARM_SERVICE);
PendingIntent pi = PendingIntent.getBroadcast(this, 0, INTENT, 0);
alarmManager.set(AlarmManager.RTC_WAKEUP, timeInFuture, pi);
}
請將'timeInFuture'的實際值添加到問題中。 –
@guydudebro:你可以在makeAlarm()中記錄timeInFuture的值併發布它 – Ashwin
取決於選擇的時間,它會有所不同,但是對於1分鐘的選擇60000將顯示在makeAlarm()的logcat中。 –