public static void setAlerm(Context context, Alerm alerm) {
   int dateMode = alerm.getMode();
   String startTime = alerm.getStartTime();
   String dateValue = alerm.getDateValue();
   long next = computeNextAlarm(dateMode, dateValue, startTime);
   Log.i("next", "------next=" + next);
   Log.d("ldx", "nextTime: " + formatDate(next) + " , action: " + alerm.notifyId);
   Intent intent = new Intent(context, EAlarmReceiver.class);
   intent.setAction(alerm.notifyId);
   intent.putExtra(Const.KEY_DATA, alerm);
   PendingIntent pi =
       PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT);
   AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
   if (next == 0) {
     am.set(AlarmManager.RTC_WAKEUP, alerm.start_time, pi);
   } else {
     am.setRepeating(AlarmManager.RTC_WAKEUP, alerm.start_time, next, pi);
   }
   System.out.println(alerm.start_time + "----------------" + next);
   System.out.println(alerm.start_time - next + "======");
 }
 public static void initAlerm(Context context) {
   SharedPreferences sp = context.getSharedPreferences(Const.ALARM_SP, Context.MODE_PRIVATE);
   for (Map.Entry<String, String> entry : ALARM_ACTIONS.entrySet()) {
     String ac = entry.getValue();
     String al = sp.getString(ac, null);
     if (null != al && 0 != al.trim().length()) {
       Alerm alerm = Alerm.parserJson(al);
       if (null != alerm) {
         cancelAlerm(context, alerm.notifyId);
         addAlerm(context, alerm);
       }
     }
   }
 }
  public static void addAlerm(Context context, Alerm alerm) {
    String action = alerm.notifyId;

    ALARM_ACTIONS.put(action, action);

    if (!ALARM_ACTIONS.contains(action)) {
      return;
    }
    cancelAlerm(context, action);
    setAlerm(context, alerm);
    SharedPreferences sp = context.getSharedPreferences(Const.ALARM_SP, Context.MODE_PRIVATE);
    Editor edit = sp.edit();
    edit.putString(action, alerm.toJson());
    edit.commit();
  }