AsyncTask-doInBackground()未执行

时间:2019-05-03 16:59:49

标签: java android

我一直在尝试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

0 个答案:

没有答案