如何解决使用IntentService执行重复的任务
| 我必须在服务中执行重复的任务(从Internet下载数据)。我使用以下代码完成了任务:public class MyService extends Service {
@Override
public int onStartCommand(Intent intent,int flags,int startId) {
mHandler.post(mTask);
return START_STICKY;
}
private final Runnable mTask = new Runnable() {
@Override
public void run() {
downloadData(url);
mHandler.postDelayed(this,mDelay);
}
};
@Override
public void onDestroy() {
mHandler.removeCallbacks(mTask);
}
}
如果我想使用IntentService代替服务并将mHandler.post(mTask);
移到onHandleIntent,则该代码仅执行1次,因为这会杀死IntentService。
@Override
public void onHandleIntent(Intent intent) {
mHandler.post(mTask);
}
我可以防止这种情况并使IntentService运行吗?
解决方法
如果服务总体不会很长,并且
mDelay
很短(一分钟或更短),则您可能只想继续使用原来的实现即可。
如果mDelay
很长,则应使用AlarmManager
,因此服务仅在工作时在内存中。在这种情况下,“ 5”警报将发出周期性重复。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。