在android中一次运行多个服务

Bal*_*san 2 service android

我正在开发一个带有多个标签的android应用程序.我的标签有以下内容.

第一个选项卡 - 它在网格视图中显示杂志的存档.目的是当我点击网格视图项时,我需要从网站下载一个大文件.为此,我创建了一个具有ASYNC任务的服务,该任务将下载该文件.我已经展示了代码.

 public class DownloadArchivesService extends BaseService {
private static final String TAG = "DownloadArchivesServices";
private static final String STOP = "stop_modificator";
public static final String ALREADY_RUNNING= "DownloadArchivesService_Already_Running";
public  static final String ARCHIVES_PERCENTAGE_PROGRESS ="Archives_Percentage_Progress";
public  static final String UPDATE_ARCHIVES_PROGRESS = "Update_Archives_Progress";

 @Override
public void onCreate() {
            getPreferences().edit().putBoolean(ALREADY_RUNNING,   true).commit();
    application = (JfwApplication)this.getApplicationContext();
    context = this;
    session = application.getSession();
    calendar = Calendar.getInstance();
    dateFormat = new SimpleDateFormat("dd-MMM-yyyy");
    magazineManager = new MagazineManager(this);

    //magazine = new Magazine(fileName, fileName, "", "", this);


    new AsyncTask<String, Integer, String>() {

    NumberFormat formater = NumberFormat.getPercentInstance(Locale.getDefault());
    @Override
    protected void onPreExecute() {

        super.onPreExecute();
    }

    @Override
    protected String doInBackground(String... params) {
        //  I do my download here       }

    @Override
    protected void onProgressUpdate(Integer... p) {
        if (isCancelled()) {
            return;
        }
        //I udpate my progress bar here     }

    @Override
    protected void onPostExecute(String result) {

        Intent intentInvalidate = new Intent(ArchivesActivity.GRID_INVALIDATE);
        sendBroadcast(intentInvalidate);

        super.onPostExecute(result);
    }
}.execute();

super.onCreate();


}
Run Code Online (Sandbox Code Playgroud)

当我导航到第二个选项卡时,我需要从网站下载一些照片并将其显示在屏幕上.我编写了类似上面的服务 - DownloadImagesService.

但问题是当上面提到的DownloadArchivesService正在运行时(即,当我点击网格视图项来调用DownloadArchivesService)并导航到第二个选项卡以下载照片时,DownloadImageService(下载照片的服务)不是调用并等待DownloadArchivesService完成.这将使用户在第一个服务完成之前等待一段时间.我知道服务将在主线程中运行,一个服务需要等待已执行的服务执行.有没有办法同时运行不同的服务(或后台任务),而无需等待以前的优质服务.

我确实浏览了有关服务,意图服务和线程的各种文档.但我无法对andorid如何处理并发服务这一特定事情.

我非常感谢任何帮助.如果我的解释不清楚,请告诉我.

谢谢.

Ali*_*Ali 5

从Android 4.0+开始AsyncTask给出一个执行线程.所以第二次AsyncTask将在第一次完成后运行.

请参阅Android 4.1中未运行的多个异步任务以了解如何处理它们.