2014-10-08 69 views
1

我执行下面的代码中的问题:AlarmManager的Android SDK

  Intent myIntent = new Intent(MedicineEntry.this, DisplaySchedule.class); 
      PendingIntent pendingIntent = PendingIntent.getActivity(MedicineEntry.this, 0, myIntent, PendingIntent.FLAG_CANCEL_CURRENT); 
      AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE); 
      Calendar calendar = Calendar.getInstance(); 
      calendar.set(Calendar.HOUR_OF_DAY, 17); 
      calendar.set(Calendar.MINUTE, 25); 
      calendar.set(Calendar.SECOND, 0); 
      calendar.setTimeInMillis(System.currentTimeMillis()); 
      calendar.add(Calendar.SECOND, 1); 
      alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent); 
      Toast.makeText(MedicineEntry.this, "Alarm Will Start In A Second", Toast.LENGTH_LONG).show(); 
      alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_FIFTEEN_MINUTES, pendingIntent); 

为了阐明我的问题,应用程序应根据对HOUR_OF_DAY,分钟和秒设定值火起来 - 即使设备处于睡眠模式。我试过测试代码,但该应用程序似乎不工作。我试着用5 * 1000代替AlarmManager.INTERVAL_FIFTEEN_MINUTES,它工作正常。请使用术语来轻松一点。我刚刚在大学期间开始使用Android进行本期学习。

编辑:我创建的这个应用程序是一个'提醒'应用程序。预计用户输入应用程序应该执行的时间。

+0

发布您的'DisplaySchedule'类 – 2014-10-11 03:33:39

回答

0

基本上有两种与AlarmManager交互的方式。您的帖子有些模糊,哪些适合您的需求。

无论如何,如果你想要一个“你每15分钟”报警类型,使用运行模式:

long firstActivation = SystemClock.elapsedRealtime(); // and not System.currentTimeMillis() 
mgr.setInexactRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, firstActivation, INTERVAL_MILLISECS, intent); 

但是,如果你正在寻找一个“你每天在15 :30"语义,使用RTC模式,如下所示:

long activationTime = calendar.getTimeInMillis(); 
    long TWENTY_FOUR_HRS = 24 * 60 * 60* 1000; 
    mgr.setInexactRepeating(AlarmManager.RTC_WAKEUP, activationTime, TWENTY_FOUR_HRS, intent); 


在上面的代码中需要注意两点:

A.我正在使用唤醒类型的闹钟。这些可能会很昂贵,因为它们会唤醒睡眠设备。你确定这是你需要的吗(提示:大多数应用程序不)?

B.我使用的setInexactRepeating()代替setRepeating()所以允许报警经理批量在一起的几个报警,从而节省资源。如果你没有充分的理由不这样做,坚持使用setInexactRepeating()

+0

嗨,我创建的这个应用程序是一个'提醒'的应用程序。预计用户输入应用程序应该执行的时间。我使用INTERVAL_FIFTEEN_MINUTES方法来测试我的代码。我可能会使用INTERVAL_DAY方法。 – Meth23 2014-10-08 12:14:59