Asynctask在运行时没有执行,而是在调试

时间:2017-12-28 11:01:09

标签: android android-asynctask

以序列方式执行两个AsyncTask。在调试其工作正常。但是在运行应用程序时,第二个AysncTask没有执行。尝试THREAD_POOL_EXECUTOR没有帮助。下面是我的代码。我对这个问题一无所知。我是完整的代码。运行headerList.size()tgrowing为零。如果AsyncTask正确执行,则大小为2。

public class MainmenuActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener  {

    @Override
    public void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_mainmenu);
        networkCheck(context,rl);

    }

    private void loadPage(){
       // new GetMenu().execute();
        GetMenu getMenuTask = new GetMenu();

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
            getMenuTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
        } else {
            getMenuTask.execute();
        }
    }

    private void setupViewPager(ViewPager viewPager) {
        adapter = new ViewPagerAdapter(getSupportFragmentManager());
        Menu menu = navigationView.getMenu();
        System.out.println("List Size "+ headerList.size());
        for(int i=0;i<headerList.size();i++)
        {
            String title = headerList.get(i).getMenuName().toString();
            GlobalClass.menuId = headerList.get(i).getLangID().toString();
            adapter.addFragment(new OneFragment(), title);
            menu.add(title);
            //viewPager.setAdapter(adapter);
        }
        viewPager.setAdapter(adapter);
    }

    private void networkCheck(Context context,LinearLayout rl) {

        boolean isConnected = NetworkCheck.isNetworkAvailable(context);

        if (isConnected) {
            if(GlobalClass.languagueSelection.toString().equals("")){
                LanguageSelectionDialog languagueDialog =new LanguageSelectionDialog(MainmenuActivity.this);
                languagueDialog.show();
            }else{
                loadPage();
            }
        } else {
            Snackbar snackbar = Snackbar
                    .make(rl, "No Internet Connection", Snackbar.LENGTH_LONG)
                    .setDuration(Snackbar.LENGTH_LONG)
                    .setAction("Retry", new View.OnClickListener() {
                        @Override
                        public void onClick(View view) {
                            Intent i = new Intent(MainmenuActivity.this, MainmenuActivity.class);
                            startActivity(i);
                            finish();
                        }
                    });

        }
    }

    private class GetMenu extends AsyncTask<Void, Void, Void> {

        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            // Showing progress dialog
            pDialog = new ProgressDialog(MainmenuActivity.this);
            pDialog.setMessage("Please wait...");
            pDialog.setCancelable(false);
            pDialog.show();

        }

        @Override
        protected Void doInBackground(Void... arg0) {
            HttpHandler sh = new HttpHandler();

            // Making a request to url and getting response
            String jsonStr = sh.makeServiceCall(menuURL);

            Log.e(TAG, "Response from MenuURL: " + jsonStr);

            if (jsonStr != null) {
                try {
                    JSONObject jsonObj = new JSONObject(jsonStr);

                    // Getting JSON Array node
                    JSONArray lanList = jsonObj.getJSONArray("menu");

                    for (int i = 0; i < lanList.length(); i++) {
                        JSONObject jsonObject1 = lanList.getJSONObject(i);
                        String langID = jsonObject1.optString("id");
                        String menuID = jsonObject1.optString("menu");
                        headerList.add(new Language(langID,menuID));

                    }
                } catch (final JSONException e) {
                    Log.e(TAG, "Json parsing error: " + e.getMessage());
                    runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                            Toast.makeText(MainmenuActivity.this, "Json parsing error: " + e.getMessage(), Toast.LENGTH_LONG).show();
                        }
                    });

                }
            } else {
                Log.e(TAG, "Couldn't get json from server.");
                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        Toast.makeText(MainmenuActivity.this,
                                "Couldn't get json from server. Check LogCat for possible errors!",
                                Toast.LENGTH_LONG)
                                .show();
                    }
                });

            }

            return null;
        }

        @Override
        protected void onPostExecute(Void result) {
            super.onPostExecute(result);
            // Dismiss the progress dialog
            if (pDialog.isShowing())
                pDialog.dismiss();

        }

    }

    public class LanguageSelectionDialog extends Dialog {


        public LanguageSelectionDialog(Activity a) {
            super(a);
            // TODO Auto-generated constructor stub
            this.languagueSelection = a;
        }

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            requestWindowFeature(Window.FEATURE_NO_TITLE);
            setContentView(R.layout.languague_selection_dialog);
            getLanguagues = new GetLanguagues();

            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
                getLanguagues.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
            } else {
                getLanguagues.execute();
            }            }

        private class GetLanguagues extends AsyncTask<Void, Void, Void> {

            @Override
            protected void onPreExecute() {
                super.onPreExecute();
                // Showing progress dialog
                pDialog = new ProgressDialog(getContext());
                pDialog.setMessage("Please wait...");
                pDialog.setCancelable(false);
                pDialog.show();

            }

            @Override
            protected Void doInBackground(Void... arg0) {
                HttpHandler sh = new HttpHandler();

                // Making a request to url and getting response
                String jsonStr = sh.makeServiceCall(languagueURL);

                Log.e(TAG, "Response from url: " + jsonStr);

                if (jsonStr != null) {
                    try {
                        JSONObject jsonObj = new JSONObject(jsonStr);

                        // Getting JSON Array node
                        JSONArray lanList = jsonObj.getJSONArray("language");

                        for (int i = 0; i < lanList.length(); i++) {
                            JSONObject jsonObject1 = lanList.getJSONObject(i);
                            String id = jsonObject1.optString("id");
                            String langId = jsonObject1.optString("language");
                            dashBoardList.add(new LanguagueSelection(id,langId));
                            lanlist.add(langId);
                            GlobalClass.langId=id;

                        }
                    } catch (final JSONException e) {
                        Log.e(TAG, "Json parsing error: " + e.getMessage());
                        runOnUiThread(new Runnable() {
                            @Override
                            public void run() {
                                Toast.makeText(getContext(), "Json parsing error: " + e.getMessage(), Toast.LENGTH_LONG).show();
                            }
                        });

                    }
                } else {
                    Log.e(TAG, "Couldn't get json from server.");
                    runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                            Toast.makeText(getContext(),
                                    "Couldn't get json from server. Check LogCat for possible errors!",
                                    Toast.LENGTH_LONG)
                                    .show();
                        }
                    });

                }

                return null;
            }

            @Override
            protected void onPostExecute(Void result) {
                super.onPostExecute(result);
                // Dismiss the progress dialog
                if (pDialog.isShowing())
                    pDialog.dismiss();
                spnLanguagueSelection.setAdapter(new ArrayAdapter<String>(getContext(), android.R.layout.simple_spinner_dropdown_item, lanlist));
                getLanguagues.cancel(true);
            }

        }

    }

}

运行时的StackTrace:

12-28 07:13:05.294 17448-17468/com.appathon.siva.news E/ContentValues: Response from url: {"language":[{"id":"21","language":"Hindi"},{"id":"20","language":"English"},{"id":"19","language":"Tamil"}]}
12-28 07:13:10.175 17448-17448/com.appathon.siva.news I/Choreographer: Skipped 297 frames!  The application may be doing too much work on its main thread.
12-28 07:13:11.616 17448-17448/com.appathon.siva.news I/System.out: List Size 0
12-28 07:13:11.662 17448-17463/com.appathon.siva.news W/EGL_emulation: eglSurfaceAttrib not implemented
12-28 07:13:11.662 17448-17463/com.appathon.siva.news W/OpenGLRenderer: Failed to set EGL_SWAP_BEHAVIOR on surface 0xf3fcd200, error=EGL_SUCCESS
12-28 07:13:11.682 17448-17472/com.appathon.siva.news E/ContentValues: Response from MenuURL: {"menu":[{"id":"14","menu":"Latest News"},{"id":"13","menu":"Top News"}]}

调试时的StackTrace

12-28 07:27:17.155 17557-17579/com.appathon.siva.news E/ContentValues: Response from url: {"language":[{"id":"21","language":"Hindi"},{"id":"20","language":"English"},{"id":"19","language":"Tamil"}]}
12-28 07:27:17.166 17557-17573/com.appathon.siva.news W/EGL_emulation: eglSurfaceAttrib not implemented
12-28 07:27:17.166 17557-17573/com.appathon.siva.news W/OpenGLRenderer: Failed to set EGL_SWAP_BEHAVIOR on surface 0xe3873d40, error=EGL_SUCCESS
12-28 07:27:30.429 17557-17583/com.appathon.siva.news E/ContentValues: Response from MenuURL: {"menu":[{"id":"14","menu":"Latest News"},{"id":"13","menu":"Top News"}]}
12-28 07:27:33.836 17557-17557/com.appathon.siva.news I/System.out: List Size 2

列表大小在不同场景下打印。

0 个答案:

没有答案