我的意图是在应用第一次运行时创建下载服务,并每24小时检查一次更新。我原本一切都运行着我的主要活动,但似乎要在一个线程和一个类上运行一切。所以这是我的尝试,将其转移到另一个班级并投入使用。它假设在24小时内运行并检查更新,如果在4小时内没有互联网再次尝试。我特别想涉及任何递归问题,有两个或三个相同的服务检查更新,每24小时只有一个。但是将我的代码整合到服务中有问题,我做错了什么?Android IntentService更新循环
public class DownloadService extends IntentService {
// TODO 0 - Define your Download Service as Android component in
// AndroidManifest.xml
private int result = Activity.RESULT_CANCELED;
public DownloadService() {
super("DownloadService");
}
// Will be called asynchronously be Android
@Override
protected void onHandleIntent(Intent intent) {
private final Runnable mUpdateUi = new Runnable(){
public void run(){
check();
}
};
private void start(){
new Thread(
new Runnable(){
public void run(){
Log.d(TAG, "inside start");
Looper.prepare();
mHandler = new Handler();
check();
Looper.loop();
}
}
).run();
}
private void check(){
if (isNetworkAvailable()== true){
try {
new checkupdate().execute();
delayTime = 86400000;
Toast.makeText(DownloadService.this, "Daily update check!", Toast.LENGTH_SHORT).show();
}
catch (IOException e) {
e.printStackTrace();
delayTime = 21600000;
}
}else{
delayTime = 21600000;
Toast.makeText(DownloadService.this, "No internet for Daily update check, try again in little!", Toast.LENGTH_SHORT).show();
}
reCheck();
}
private void reCheck(){
mHandler.postDelayed(mUpdateUi, delayTime);
}
}
这非常有趣,并感谢您的回应!我目前正在将我的下载内容发送到下载管理器,那么您还会使用意向服务的兄弟吗?我无法废除意图服务的想法,只需使用警报管理器在24小时内触发检查更新,然后像往常一样将下载文件发送到下载管理器? – MAXGEN
如果你使用'android.app。DownloadManager'然后不,你不需要使用IntentService。关于使用自己的IntentService的唯一原因是在调用DownloadManager之前立即执行一些其他任务 - 因为IntentService实现了一个工作队列,所以它可以是链接任务的便捷方式。根据你所描述的内容,虽然在这种情况下我没有看到任何需要。 DownloadManager已经以更健壮和灵活的方式做了你自定义的IntentService需要做的事情。 –
“...除了通常的onHandleIntent之外,您还需要实现onStartCommand ...” - 谢谢。我一直在努力更新我的'IntentService'行动。 –