1

我在安排闹钟时遇到问题。我想让我的闹钟的每次调用都独一无二,这样它就不会与我已经设置的上一个闹钟重叠。这是我的代码:

public void compareDates()  
{  
String callName;  
String dateStart;  
String dateDue;  
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm");  
long callTime = System.currentTimeMillis();  
Date callsDateStart = new Date();  
Date dateNow = new Date();  

GlucoseDatabaseAdapter gda = new GlucoseDatabaseAdapter(this);  
gda.open();  
Cursor c = gda.getEntries(GlucoseDatabaseAdapter.TABLE_CALLS, null,null,null,null,null,null);  

 AlarmManager callsAlarm = (AlarmManager)getSystemService(ALARM_SERVICE);  
 Intent alarmIntent = new Intent(this,callsNotify.class);  
 callAlarm = PendingIntent.getService(this, 0, alarmIntent, 0);  
    if(c.moveToFirst())  
    {  
      do  
      {  
    //GET DATA  
      callName = c.getString(GlucoseDatabaseAdapter.CALLS_NAME_KEY);  
      dateStart = c.getString(GlucoseDatabaseAdapter.CALLS_DATE_START_KEY);  
      dateDue = c.getString(GlucoseDatabaseAdapter.CALLS_DATE_DUE_KEY);  

    //COMPARE DATES
      try 
      {  
      callsDateStart = sdf1.parse(dateStart); }  
      catch (ParseException e) 
      { // TODO Auto-generated catch block
      e.printStackTrace();  }

        if(callsDateStart.after(dateNow))  
        {  
            long callsDs = callsDateStart.getTime();  
            long ff = callsDs - callTime;  
            callsAlarm.set(AlarmManager.RTC, System.currentTimeMillis() + ff, callAlarm);
    }  
    }while(c.moveToNext());  }  

// 我在这段代码中多次调用 callsAlarm。当我在这里设置 callsAlarm 时,它只设置最新的。我如何让这里的每一套都独一无二?

4

1 回答 1

0

你必须确保你传入的 Intent 是唯一的或者只能被调用一次。看起来你一遍又一遍地使用同一个,所以它被写满了。您可能希望将待处理的意图更改为如下所示,并阅读android 文档以了解其他可能的标志设置

PendingIntent sender = PendingIntent.getBroadcast(con, 0, intent, PendingIntent.FLAG_ONE_SHOT);
于 2011-02-26T06:35:33.820 回答