2016-06-22 135 views
-1

我有一個報警在我的應用程序:爲什麼我的Android AlarmManager代碼無法正常工作?

public class MainActivity extends AppCompatActivity { 
    @Override 
    public void onCreate(Bundle savedInstanceState){ 
     Calendar calendar = Calendar.getInstance(); 
     calendar.setTimeInMillis(System.curentTimeMillis()); 
     calendar.set(Calendar.HOUR_OF_DAY, 11); 
     calendar.set(MINUTE, 11); 

     Intent intent = new Intent(this, AlarmReceiver.class); 
     PendingIntent pendingIntent = Pending.getBroadcast(this, 0, intent, 0); 

     AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE); 
     alarmManager.setInexactRepeating(AlarmManager.RTC, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pendingIntente); 
    } 
} 

這是我AlarmReceiver.class

public class AlarmReceiver extends BroadcastReceiver { 
    @Override 
    public void onReceive(Context context, Intent intent){ 
     SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss"); 
     System.out.println("ALARM: " + sdf.format(new Date())); 
    } 
} 

在我的AndroidManifest.xml我這行

<receiver android:name=".main.AlarmReceiver" /> 

的問題是在我設定的時間內,鬧鐘不會報警。我設置了報警

calendar.set(Calendar.HOUR_OF_DAY, 11); 
calendar.set(MINUTE, 5); 

然後報警在11:11:29報警。然後我設置了報警

calendar.set(Calendar.HOUR_OF_DAY, 11); 
calendar.set(MINUTE, 20); 

然後報警在11:26:29報警。然後我設置了報警

calendar.set(Calendar.HOUR_OF_DAY, 11); 
calendar.set(MINUTE, 29); 

然後報警在11:41:29報警。

整個上午這樣繼續。不過,如果我替換該行

alarmManager.setInexactRepeating(AlarmManager.RTC, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pendingIntente); 

這一行

alarmManager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, (SystemClock.elapsedRealtime()+10000), pendingIntent); 

然後報警的報警完全在適當的10秒。

這是怎麼回事?

回答

相關問題