Android 创建多个异步任务以同步服务内的文件

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

我已经创建了一个服务,我从我的主要活动中调用它,将文件同步到服务器。调用服务时,我调用'newfilelist().execute();它提供用于上载和下载的文件列表。在这个asynctask的执行后,我调用另外两个asynctask来上传和下载

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;