代码之家  ›  专栏  ›  技术社区  ›  hyunwookcho

如何在Android上设置AlarmManager每凌晨2:00挂起?[副本]

  •  0
  • hyunwookcho  · 技术社区  · 7 年前

    Alarm Manager的参考资料说

    马上。

    我在申请时遇到了这个问题。这是我的报警管理器代码:

    Intent myIntent = new Intent(getActivity(), DinnerAlarmReceiver.class);
                    pendingDinnerIntent = PendingIntent.getBroadcast(getActivity(), 0, myIntent, 0);
    
                    Calendar calendar = Calendar.getInstance();
                    calendar.set(Calendar.HOUR_OF_DAY, hourOfDay);
                    calendar.set(Calendar.MINUTE, minute);
    
                    alarmManager.set(AlarmManager.RTC_WAKEUP,
                            calendar.getTimeInMillis(), pendingDinnerIntent);
    

    -----编辑------

    Calendar calendar = Calendar.getInstance();
                    long currentTime = calendar.getTimeInMillis();
                    calendar.set(Calendar.HOUR_OF_DAY, hourOfDay);
                    calendar.set(Calendar.MINUTE, minute);
                    long setTime = calendar.getTimeInMillis();
                    Timestamp setTimestamp = new Timestamp(setTime);
                    Timestamp currentTimestamp = new Timestamp(currentTime);
                    if (setTimestamp.after(currentTimestamp))
                    {
                        alarmManager.set(AlarmManager.RTC_WAKEUP,
                                calendar.getTimeInMillis(), pendingDinnerIntent);
                    }
                    else
                    {
                    }
    

    我该怎么办 alarmManager setTimestamp currentTimestamp

    0 回复  |  直到 10 年前
        1
  •  25
  •   Mike M.    9 年前

    你不需要创造 Timestamp s、 你可以用你的手来做 Calendar

    Calendar calendar = Calendar.getInstance();
    calendar.set(Calendar.HOUR_OF_DAY, hourOfDay);
    calendar.set(Calendar.MINUTE, minute);
    
    if(calendar.before(Calendar.getInstance())) {
        calendar.add(Calendar.DATE, 1);
    }
    
    alarmManager.set(AlarmManager.RTC_WAKEUP,
        calendar.getTimeInMillis(), pendingDinnerIntent);
    

    我还想提到的是,在基特卡特,如果你的 targetSdkVersion 19岁或以上 AlarmManager#set() setExact*() 方法。