1

我在后台运行服务。
我想在特定的时间间隔调用此服务。
如果用户提供值 10、20、30,则服务应在 10 分钟、20 分钟和 30 分钟后调用。

我该怎么做以上的事情?

4

3 回答 3

1

AlarmManager会帮助你 :)

它允许您设置在指定时间范围内启动应用程序组件的计划

更新

要实例化一个AlarmManager将在实例化后的特定时间段发挥作用的实例,请使用setRepeating()添加到的方法和 PERIOD 参数对其进行配置SystemClock.elapsedRealime()

AlarmManager mgr = (AlarmManager)getSystemService(ALARM_SERVICE);
mgr.setRepeating(AlarmManager.ELAPSED_REALTIME,
                     SystemClock.elapsedRealtime() + PERIOD, PERIOD, pi); // Here PERIOD is a value specified by you as PendingIntent object
于 2013-06-10T07:05:33.697 回答
0
Calendar startTime = Calendar.getInstance();
        startTime.set(Calendar.HOUR_OF_DAY, 10);
        startTime.set(Calendar.MINUTE, 20);
        startTime.set(Calendar.SECOND, 25);

        Intent dailyQuotes = new Intent(getActivity(), DailyQuotesService.class);
        AlarmManager am = (AlarmManager)getActivity().getSystemService(Context.ALARM_SERVICE);
        PendingIntent pi = PendingIntent.getService(getActivity(), 0, dailyQuotes, 0);
        am.setInexactRepeating(AlarmManager.RTC_WAKEUP, startTime.getTimeInMillis(), 30000, pi);

这是我的代码,它会在指定时间准确地调用我的服务。然后每 30 秒重复一次。

于 2013-12-27T08:02:46.287 回答
0

您可以设置警报以在特定时间间隔触发 Intent。如果警报在准确的时间运行并不重要,您也可以设置不准确的警报。

于 2013-06-10T07:08:56.450 回答