具体的时间Android的服务运行具体、时间、Android

由网友(男生,不要低着头)分享简介:我想只在特定时间每天运行的服务,让说,每天8:00在这里,我发现了两个方法为I am trying to run service on every day only on Specific time,lets say every day 8 :00 am and here I found two method...

我想只在特定时间每天运行的服务, 让说,每天8:00 在这里,我发现了两个方法为

I am trying to run service on every day only on Specific time, lets say every day 8 :00 am and here I found two methods as

public static void setScheduleMessage(Context context, int hours,
        int minuts, int seconds) {
    Calendar calendar = Calendar.getInstance();
    // 8 AM
    calendar.set(Calendar.HOUR_OF_DAY, hours);
    calendar.set(Calendar.MINUTE, minuts);
    calendar.set(Calendar.SECOND, seconds);
    PendingIntent pendingIntent = PendingIntent.getService(context, 0,
            new Intent(context, MessageSchduledService.class),
            PendingIntent.FLAG_UPDATE_CURRENT);
    AlarmManager alarmManager = (AlarmManager) context
            .getSystemService(Context.ALARM_SERVICE);
    alarmManager.setRepeating(AlarmManager.RTC_WAKEUP,
            calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY,
            pendingIntent);
}

但问题这种方法,它正在运行每隔一小时后的规定时间。

But problem with this method is, it is running every hour after specified time.

和这里是我用第二种方法是没有执行我的服务?

and here is second method I used which is not executing my service ?

public static void setScheduleMessage2(Context context, int hours,
        int minuts, int seconds) {
    Calendar cur_cal = new GregorianCalendar();
    cur_cal.setTimeInMillis(System.currentTimeMillis());// set the current

     // time and date for

     // this calendar
    Calendar cal = new GregorianCalendar();
    cal.add(Calendar.DAY_OF_YEAR, cur_cal.get(Calendar.DAY_OF_YEAR));
    cal.set(Calendar.HOUR_OF_DAY, hours);
    cal.set(Calendar.MINUTE, minuts);
    cal.set(Calendar.SECOND, cur_cal.get(Calendar.SECOND));
    cal.set(Calendar.MILLISECOND, cur_cal.get(Calendar.MILLISECOND));
    cal.set(Calendar.DATE, cur_cal.get(Calendar.DATE));
    cal.set(Calendar.MONTH, cur_cal.get(Calendar.MONTH));
    Intent intent = new Intent(context, MessageSchduledService.class);

    PendingIntent pintent = PendingIntent.getService(context, 0, intent, 0);
    AlarmManager alarm = (AlarmManager) context
            .getSystemService(Context.ALARM_SERVICE);

    alarm.setRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(),
            AlarmManager.INTERVAL_DAY, pintent);

} 

邮编: 在我的应用我只是想从我的应用程序数据库,以信息数据的基础上,在特定的时间,每天推送消息。 请,如果有这个想法任何人,然后让我知道我做错了这些方法?

POST : In my app I just want to push message from my app Database to Message Data base at specific time every day. please if anybody having an idea about this, then let me know what i am doing wrong in these methods ?

推荐答案

看一看报警 @ RTC例子

Have a look Alarms @ RTC examples

// Set the alarm to start at approximately 2:00 p.m.
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.set(Calendar.HOUR_OF_DAY, 14);

// With setInexactRepeating(), you have to use one of the AlarmManager interval
// constants--in this case, AlarmManager.INTERVAL_DAY.
alarmMgr.setInexactRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),
        AlarmManager.INTERVAL_DAY, alarmIntent);

在你的code

alarm.setRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(),
            AlarmManager.INTERVAL_DAY, pintent);

替换

AlarmManager.INTERVAL_DAY

AlarmManager.INTERVAL_DAY

24 * 60 * 60 * 1000

24 * 60 * 60 * 1000

。这意味着重复报警正好24小时后

. which means repeat alarm exactly after 24 hours

阅读全文

相关推荐

最新文章