2016-06-22 92 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秒。

这是怎么回事?

回答

相关问题