如何在一个类中执行两个AsyncTask?

时间:2014-12-12 10:40:01

标签: android android-asynctask

我试图在一个类中逐个执行两个AsyncTask。

我试过这个

class LoginProcess extends AsyncTask<String, String, String> {

        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            pDialog = new ProgressDialog(Login_Activity.this);          
            pDialog.show();
        }

        protected String doInBackground(String... args) {
            //Request Making        
            return null;
        }

        protected void onPostExecute(String file_url) {
            pDialog.dismiss();

            try {
            if(login){
                                                                 //Call another AsyncTask
                    new GetFav().execute();
            }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }

    }

    class GetFav extends AsyncTask<String, String, String> {

        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            pDialog = new ProgressDialog(Login_Activity.this);          
            pDialog.show();
        }

        @SuppressLint("ShowToast")
        protected String doInBackground(String... args) {

            try {
                                                                             //Request Making
                //Getting the results from response

            } catch (Exception e) {
                e.printStackTrace();
            }

            return null;
        }

        protected void onPostExecute(String file_url) {
            pDialog.dismiss();          
            }
        }
    }

首要任务是登录活动。第二个任务是获取favDetails。 它在模拟器中工作正常。但是,当我尝试在移动设备中执行时,我收到错误。登录成功后页面将导航。但是favDetails是空的。导航后,仅在设备中执行favDetail任务。请让我知道如何逐个使用两个异步任务。

我的错误是: -

    12-12 06:34:47.641: E/AndroidRuntime(31294): Process: info.androidhive.googlemapsv2, PID: 31294
12-12 06:34:47.641: E/AndroidRuntime(31294): java.lang.NullPointerException
12-12 06:34:47.641: E/AndroidRuntime(31294): at info.androidhive.slidingmenu.ExpandableDrawerAdapter.getChildrenCount(ExpandableDrawerAdapter.java:61)
12-12 06:34:47.641: E/AndroidRuntime(31294): at android.widget.ExpandableListConnector.refreshExpGroupMetadataList(ExpandableListConnector.java:567)
12-12 06:34:47.641: E/AndroidRuntime(31294): at android.widget.ExpandableListConnector.expandGroup(ExpandableListConnector.java:698)
12-12 06:34:47.641: E/AndroidRuntime(31294): at android.widget.ExpandableListView.handleItemClick(ExpandableListView.java:698)
12-12 06:34:47.641: E/AndroidRuntime(31294): at android.widget.ExpandableListView.performItemClick(ExpandableListView.java:651)
12-12 06:34:47.641: E/AndroidRuntime(31294): at android.widget.AbsListView$PerformClick.run(AbsListView.java:3467)
12-12 06:34:47.641: E/AndroidRuntime(31294): at android.widget.AbsListView$3.run(AbsListView.java:4830)
12-12 06:34:47.641: E/AndroidRuntime(31294): at android.os.Handler.handleCallback(Handler.java:733)
12-12 06:34:47.641: E/AndroidRuntime(31294): at android.os.Handler.dispatchMessage(Handler.java:95)
12-12 06:34:47.641: E/AndroidRuntime(31294): at android.os.Looper.loop(Looper.java:146)
12-12 06:34:47.641: E/AndroidRuntime(31294): at android.app.ActivityThread.main(ActivityThread.java:5602)
12-12 06:34:47.641: E/AndroidRuntime(31294): at java.lang.reflect.Method.invokeNative(Native Method)
12-12 06:34:47.641: E/AndroidRuntime(31294): at java.lang.reflect.Method.invoke(Method.java:515)
12-12 06:34:47.641: E/AndroidRuntime(31294): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283)
12-12 06:34:47.641: E/AndroidRuntime(31294): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099)
12-12 06:34:47.641: E/AndroidRuntime(31294): at dalvik.system.NativeStart.main(Native Method)

单击幻灯片菜单时出现此错误。我在运行时加载幻灯片菜单项。现在这些物品都是空的。这就是我收到错误的原因。

我的第一页是登录页面。第二页是欢迎页面。在该页面中,我有带动态项目的幻灯片菜单。所有项目都将登录登录屏幕。如果登录成功,我将从服务器获取项目并将项目加载到幻灯片菜单。但第二个asyncTask不起作用。这就是我收到此错误的原因。

现在请让我知道如何逐个执行AsyncTask。

抱歉英语不好..

提前致谢..

1 个答案:

答案 0 :(得分:-1)

您应该在活动中设置一个Handler来执行第二个AsyncTask,然后从第一个AsyncTask的onPostExecute方法调用该Handler。