我试图每天只在特定时间运行服务,让我们说每天早上 8 点在这里我找到了两种方法
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 ?
推荐答案看看 Alarms@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);或
在你的代码中
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 上运行
发布评论