服务在特定时间 Android 上运行

编程入门 行业动态 更新时间:2024-10-21 03:22:07
本文介绍了服务在特定时间 Android 上运行的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我试图每天只在特定时间运行服务,让我们说每天早上 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 上运行

本文发布于:2023-11-27 08:16:55,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1637243.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:时间   在特定   Android

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!