Android异步任务同步

Android异步任务同步,android,synchronization,thread-safety,android-asynctask,Android,Synchronization,Thread Safety,Android Asynctask,我有一个定时服务(为了进行定时,我使用了BroadcastReceiver和AlarmManager包)。服务使用AsyncTask执行一些长时间运行的操作 连接到服务器 检查一些更新 加载更新(如果存在) 执行数据更新操作 我从onStart方法调用任务,如下所示: onStart(...){ ... new AsyncUpdate(...).execute(...); } 用户可以手动执行更新操作(他按下运行服务的按钮)。 那么,如果他在执行AsyncUpdate任务的过程中按下按钮会怎么

我有一个定时服务(为了进行定时,我使用了BroadcastReceiver和AlarmManager包)。服务使用AsyncTask执行一些长时间运行的操作

  • 连接到服务器
  • 检查一些更新
  • 加载更新(如果存在)
  • 执行数据更新操作
  • 我从onStart方法调用任务,如下所示:

    onStart(...){
    ...
    new AsyncUpdate(...).execute(...);
    }
    
    用户可以手动执行更新操作(他按下运行服务的按钮)。 那么,如果他在执行AsyncUpdate任务的过程中按下按钮会怎么样呢?根据引用,将创建新的工作线程,因此我需要同步它们。 我使用服务类中的静态参数:

    synchronized(MyService.runLock){//public static Object runLock = new Object();
    ...perform download and update operations
    }
    
    对吗


    我以前使用过:远程服务,所以服务在单独的线程中执行,我不需要在这些线程之间进行同步,因为我知道我只有一个线程。

    如果您不介意将操作排队,那么它可能对您有用。它处理自己的队列,并在工作线程上依次执行每个请求。当它失去工作时,它会自动停止。

    您可以使用该方法


    保留您的
    AsyncUpdate
    的引用,查看它是否返回运行状态。

    我可以将IPC用于此类服务吗?