具体的时间Android的服务运行 [英] Service run on specific Time Android

查看:136
本文介绍了具体的时间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 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

这篇关于具体的时间Android的服务运行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆