简体   繁体   English

在if / else语句中调用AsyncTask吗?-Android

[英]calling AsyncTask inside if/else statement?- android

So, I made a function to return an ArrayList of strings. 因此,我做了一个函数来返回字符串的ArrayList。 In that function, i have an if/else statement. 在该函数中,我有一个if / else语句。 In the if statement I start a background thread using AsyncTask. 在if语句中,我使用AsyncTask启动了后台线程。 My question is, will my function return me the ArrayList called queriedCardIDList before I finish the AsyncTask? 我的问题是,在我完成AsyncTask之前,我的函数会返回名为queriedCardIDList的ArrayList吗? And if so, how do I work around this? 如果是这样,我该如何解决?

Cheers! 干杯!

public ArrayList<String> getCardIDList()
{
   if(shouldIQuery())
   {
      QueryCardsAsyncTask queryCardsAsyncTask = new QueryCardsAsyncTask();
      queryCardsAsyncTask.execute();
   }
   else
   {
      myPreferences.loadCardsPrefs();
      for(CardModel c : myPreferences.getSavedCards())
      {
         queriedCardIDList.add(c.getCardID());
      }
      return queriedCardIDList;
   }
   return queriedCardIDList; 
}

Manage your async task as mentioned below, 如下所述管理您的异步任务,

public class QueryCardsAsyncTask extends AsyncTask<Void, Void, ArrayList<String>> {

    private ArrayList<String> queriedCardIDList = new ArrayList<>();

    @Override
    protected ArrayList<String> doInBackground(Void... params) {
        if (shouldIQuery()) {
            // You logic to be written in async task
        } else {
            // else part, get your data from preference

            myPreferences.loadCardsPrefs();
            for (CardModel c : myPreferences.getSavedCards()) {
                queriedCardIDList.add(c.getCardID());
            }
        }

        return queriedCardIDList;
    }

    @Override
    protected void onPostExecute(ArrayList<String> cardIdList) {
        super.onPostExecute(cardIdList);
        // Now use cardIdList here as per your requirement
    }
}

Then just call async task only 然后只调用异步任务

 QueryCardsAsyncTask queryCardsAsyncTask = new QueryCardsAsyncTask();
 queryCardsAsyncTask.execute();

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM