如何重复 AlarmManager 启动 AsyncTask? [英] How can repeating AlarmManager start AsyncTask?
问题描述
我通常编写此代码以使用 AlarmManager
启动服务.
I usually write this code to start a service with AlarmManager
.
intent = new Intent(getActivity(), someservice.class);
pendingNotificationIntent = PendingIntent.getService(getActivity(), 0, intent, 0);
alarm = (AlarmManager) getActivity().getSystemService(getActivity().ALARM_SERVICE);
int interval = 30 * 1000;
long now = Calendar.getInstance().getTimeInMillis();
alarm.setRepeating(AlarmManager.RTC_WAKEUP, now, interval, pendingNotificationIntent);
我的 AsyncTask
是一个私有类,我在其中注册了 AlarmManager
对象.
My AsyncTask
is a private class where I register AlarmManager
object.
如何使用 AlarmManager
对象调用 AsyncTask
而不是服务?
How can I call the AsyncTask
instead of a service using AlarmManager
object?
附注.如果有更好的方法让 AsyncTask
每 X 秒/分钟运行一次,请提出!
PS. If there is a better way to run AsyncTask
every X seconds/minutes, please propose it!
推荐答案
您可以这样做:
1.) 定义一个静态意图(intent1)并在设置时间时使用它传递给AlarmManager.所以现在无论何时,都会流逝;AlarmManager 会通过发送 intent1 来通知.
1.) Define a static intent (intent1) and use it to pass to AlarmManager when setting time. So now when ever time, will lapse; AlarmManager will notify by sending intent1.
2.) 在 Intent1 的 BroadcastReceiver 的 onReceive 上,启动一个 AsyncTask.在 AsyncTask 结束时,为 AlarmManager 设置下一次.
2.) On onReceive of BroadcastReceiver of intent1, start a AsyncTask. At end end of AsyncTask, set the next time for AlarmManager.
这篇关于如何重复 AlarmManager 启动 AsyncTask?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!