Android 创建多个异步任务以同步服务内的文件
我已经创建了一个服务,我从我的主要活动中调用它,将文件同步到服务器。调用服务时,我调用'newfilelist().execute();它提供用于上载和下载的文件列表。在这个asynctask的执行后,我调用另外两个asynctask来上传和下载Android 创建多个异步任务以同步服务内的文件,android,service,android-asynctask,sync,Android,Service,Android Asynctask,Sync,我已经创建了一个服务,我从我的主要活动中调用它,将文件同步到服务器。调用服务时,我调用'newfilelist().execute();它提供用于上载和下载的文件列表。在这个asynctask的执行后,我调用另外两个asynctask来上传和下载 for (int i = 0; i < files_server.size(); i++) { filename=files_server.get(i); new DownloadFileFromU
for (int i = 0; i < files_server.size(); i++) {
filename=files_server.get(i);
new DownloadFileFromURL().execute(file_url+files_server.get(i));
try {
thread.sleep(100);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
for (int j = 0; j < files_phone.size(); j++) {
filePath=files_phone.get(j);
new UploadFileToServer().execute();
try {
thread.sleep(100);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
代码运行良好,但由于我是android新手,我无法找到一种不同时创建这么多异步任务的方法,因此我添加了延迟,这不是一个合适的解决方案。请帮助我如何做到这一点,以及服务是否是一个好的选择,以及停止这样的服务是否可以?尝试使用而不是ASynchTask。我认为您应该创建一个IntentService来实现onHandleIntent方法中所需的任务。在方法结束时,应通过sendBroadcast方法将获得的结果发送给注册的广播接收器。
然后,在专用的BroadcastReceiver中,您应该实现并注册您应该捕获由intent服务发送的消息并处理它们
在您实现了这样的体系结构之后,您应该随时从活动/片段中启动意图服务。
通过使用intent服务,您不必处理队列中的任务,是的,在我看来,使用延迟来平衡队列不是一个好主意
new FileList().execute();
try {
thread.sleep(100);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} Toast.LENGTH_SHORT).show();
stopSelf();
return mStartMode;