[英]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.