我一直在尝试AsyncTask,甚至整天都在尝试。我似乎无法执行doInBackground()方法。我已经知道onPreExecute()和onPostExecute()正在工作。但是似乎该过程跳过了doInBackground()方法。我已经尝试了StackOverflow中的所有方法,但似乎没有一种对我有用。
我已经尝试过这些片段
FetchMovies fm = new FetchMovies();
int mCorePoolSize = 60;
int mMaximumPoolSize = 80;
int mKeepAliveTime = 10;
BlockingQueue<Runnable> workQueue = new LinkedBlockingQueue<Runnable>
(mMaximumPoolSize);
Executor mCustomThreadPoolExecutor = new
ThreadPoolExecutor(mCorePoolSize, mMaximumPoolSize,
mKeepAliveTime,
TimeUnit.SECONDS, workQueue);
fm.executeOnExecutor(mCustomThreadPoolExecutor);
和
fm.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, (Void[])null);
AsyncTask代码是这样的
public class FetchMovies extends AsyncTask<Void,Void,Void> {
@Override
protected void onPreExecute() {
super.onPreExecute();
progressBar.setVisibility(View.VISIBLE);
Toast.makeText(MainActivity.this,"start",Toast.LENGTH_LONG).show();
}
@Override
protected Void doInBackground(Void... voids) {
String popularMovies = "http://api.themoviedb.org/3/discover/movie?sort_by=popularity.desc&api_key="+APIKey;
String topRatedMovies = "http://api.themoviedb.org/3/discover/movie?sort_by=vote_average.desc&api_key="+APIKey;
mPopularList = new ArrayList<>();
mTopTopRatedList = new ArrayList<>();
try {
if(Nutils.networkStatus(MainActivity.this)){
mPopularList = Nutils.fetchData(popularMovies); //Get popular movies
mTopTopRatedList = Nutils.fetchData(topRatedMovies); //Get top rated movies
Toast.makeText(MainActivity.this,"Connected",Toast.LENGTH_LONG).show();
}else{
Toast.makeText(MainActivity.this,"No Internet Connection",Toast.LENGTH_LONG).show();
}
} catch (IOException e){
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Void s) {
super.onPostExecute(s);
progressBar.setVisibility(View.INVISIBLE);
Toast.makeText(MainActivity.this,"end",Toast.LENGTH_LONG).show();
}
}
均无效。如果有人能帮助我,我将非常感激。
感谢advace