我通常编写此代码以使用 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?
发布评论