如何防止异步任务功能同时运行两次

时间:2015-10-11 12:24:13

标签: android android-asynctask

我试图阻止调用异步函数在同一时间运行两次。

我正在调用此函数来填充RecyclerView,有时会发生该函数被调用两次,因此我在recycleler视图中有重复的项目,所以我想阻止该函数在同一个函数中运行两次时间。那可能吗?

wxListCtrl

我在OnResume上调用任务

private class RefreshV2 extends AsyncTask<Void, Integer, Void>
{

    @Override
    protected void onPreExecute() {
        super.onPreExecute();
       //Start
    }


    @Override
    protected Void doInBackground(Void... arg0) {

     // Populate the recycler view
        return null;
    }

    @Override
    protected void onPostExecute(Void result) {
       // finish
    }
}

和按钮ClickListener:

  @Override
public void onResume(){
    super.onResume();
    RefreshV2 RVZ = new RefreshV2();
    RVZ.execute();
  Log.d("Resuming","yes");

}

1 个答案:

答案 0 :(得分:1)

您可以添加一个全局布尔变量,该变量在onPreExecute()中设置为true,在onPostExecute()中设置为false。 在doInBackground()中只检查该变量的状态并决定是否采取行动!