2014-10-06 1 views
1

나는 alarmmanager를 사용하는 프로젝트를 가지고있다. 많은 avtivity는 알람을 설정하고 알람이 오르면 알람 표시를 시작한 AlarmSetter 이름의 특정 작업을 수행하고 새로운 (다음) 알람 및 알람 (사용자가 필요하면)을 설정합니다. 내 문제는 설정 한 마지막 알람입니다. 이것은 모든 활동을 의미합니다 마지막 알람 세트가 작동했음을 의미합니다. 예를 들어 사용자가 스누즈 버튼을 선택한 다음 주 알람이 작동하지 않으면 알람 설정자에서 작동합니다 (단지 스누즈 작업뿐 아니라 마지막 알람 있음).왜 그냥 마지막 알람이 작동 했는가

public class G extends Application { 
public static AlarmManager   alarmManager; 
@Override 
public void onCreate() { 
    super.onCreate(); 
    context = getApplicationContext(); 
    inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE); 
} 
} 

알람 세터 자바는 다음과 같습니다 : 내가이 내 G 클래스 인 G 클래스에 알람 관리기 설정 (공통) 및 사용

alarm.java 활동에 알람을 설정

public class ActivityAlarm extends ActivityMain { 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    requestWindowFeature(Window.FEATURE_NO_TITLE); 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.alarmshower); 

    //at first reminder will start, should register next alarm time : 
    long MilisectoAlarmManager = mDbHelper.SetNextTime_andIsactiveYET(DrugRegID); 
    if (MilisectoAlarmManager != 0 && IsFor10minlater == 0) { 
     Intent intentMain = new Intent(G.context, ActivityAlarm.class); 
     intentMain.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
     intentMain.putExtra("DrugID", String.valueOf(DrugRegID)); 
     intentMain.putExtra("IsItFor10MinLate", String.valueOf(0)); 
     PendingIntent pendingIntentMain = PendingIntent.getActivity(G.context, 0, intentMain, PendingIntent.FLAG_UPDATE_CURRENT); 
     String AA = mDbHelper.GetStartDateAlarm(DrugRegID); 
     Date D = new Date(MilisectoAlarmManager); 
     System.out.println("current Date(ms): " + MilisectoAlarmManager); 
     G.alarmManager.set(AlarmManager.RTC_WAKEUP, MilisectoAlarmManager, pendingIntentMain); 
    } 



//Finished Activing Alarm Manager and switch Off Alarmn 
    else if (MilisectoAlarmManager == 0 && IsFor10minlater == 0) { 
     mDbHelper.UpdateAlarmSwitch(DrugRegID, false); 
    } 

    handler.postDelayed(r, HowLongRemainAlarm_var); 
    //End CountDown Finished Activity 

    //Procedure for 10 min later button 
    btn10minLater_var.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View arg0) { 
      // TODO Auto-generated method stub 
      btn10minLater_var.setBackgroundColor(Color.parseColor("#1174b9")); 
      Intent intentFor10min = new Intent(G.context, ActivityAlarm.class); 
      intentFor10min.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
      intentFor10min.putExtra("DrugID", String.valueOf(DrugRegID)); 
      intentFor10min.putExtra("IsItFor10MinLate", String.valueOf(1)); 
      PendingIntent pendingIntent10min = PendingIntent.getActivity(G.context, 0, intentFor10min, PendingIntent.FLAG_UPDATE_CURRENT); 

      G.alarmManager.set(AlarmManager.RTC_WAKEUP, new Date().getTime() + 20000, pendingIntent10min); 



      ActivityAlarm.this.finish(); 
     } 
    }); 

답변

3

전 발견 asnwer! PendingIntent.getActivity secound 매개 변수는 각 알람 세트에서 다른 값을 가져야합니다!

관련 문제