Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在一个类中执行多个异步任务_Java_Android_Android Asynctask - Fatal编程技术网

Java 如何在一个类中执行多个异步任务

Java 如何在一个类中执行多个异步任务,java,android,android-asynctask,Java,Android,Android Asynctask,我使用的是Android SDK 4.0 API14,我想在一个类中运行多个异步任务,我希望调用的异步任务在完成之前等待,但似乎我无法完成这一点,即使我测试当前正在执行的任务的状态。这是我的代码: if(isNetworkAvailable()){ new SpinnerTask().execute(); new RiderTask().execute(); new BankTask().execute(); } //sp

我使用的是Android SDK 4.0 API14,我想在一个类中运行多个异步任务,我希望调用的异步任务在完成之前等待,但似乎我无法完成这一点,即使我测试当前正在执行的任务的状态。这是我的代码:

if(isNetworkAvailable()){
        new SpinnerTask().execute();
        new RiderTask().execute();
        new BankTask().execute();
        }

    //spinner bank
        public class BankTask extends AsyncTask<Void, Void, String>{
            String url="http://128.21.30.37:8080/E-Policy/ios/spaj_bank.htm?type=pusat";
            public BankTask(){
            this.url=url;
            System.out.println(url);}
            @Override
            protected void onPreExecute() {
            super.onPreExecute();
            dialog=new ProgressDialog(Menu_SPPAJ.this);
            dialog = ProgressDialog.show(Menu_SPPAJ.this, "Mohon Menunggu", "Penarikan data Rider..");}
            @Override
            protected String doInBackground(Void... params) {
                // TODO Auto-generated method stub
                    String result = "";
                    try {
                        result = Connection.get(url);
                        System.out.println("tes " + result);
                        } catch (Exception e) {
                        // TODO: handle exception
                        result = "";    
                        }
                        return result;
                        }
            @Override
            protected void onPostExecute(String result) {
            dialog.dismiss();
            // TODO Auto-generated method stub
            super.onPostExecute(result);
//          Response(result.replace("\n", "").trim());
            System.out.println("done for Bank");
            try {
                JSONObject jsonObject = new JSONObject(result);

                JSONArray PRODUK = jsonObject.getJSONArray("BANK PUSAT");

                for (int i=0; i<PRODUK.length();i++){

                    JSONObject spinner = PRODUK.getJSONObject(i);
                            String LSBP_NAMA = spinner.optString("LSBP_NAMA");
                            int LSBP_ID = spinner.optInt("LSBP_ID");
                        helper.InsertBank(LSBP_ID, LSBP_NAMA);
//                      ListSpinner.add(VarSpinner);
                        System.out.println("tes VarSpinner");
                    }
                }catch (Exception e) {
                Log.d("TES", e.getMessage());
            }
            }
            }  
//spinner bank
            public class CabBankTask extends AsyncTask<Void, Void, String>{
            String url="http://128.21.30.37:8080/E-Policy/ios/spaj_bank.htm?type=cabang";
                public CabBankTask(){
                this.url=url;
                System.out.println(url);}
                @Override
                    protected void onPreExecute() {
                    super.onPreExecute();
                    dialog=new ProgressDialog(Menu_SPPAJ.this);
                    dialog = ProgressDialog.show(Menu_SPPAJ.this, "Mohon Menunggu", "Penarikan data Rider..");}
                    @Override
                    protected String doInBackground(Void... params) {
                        // TODO Auto-generated method stub
                            String result = "";
                            try {
                                result = Connection.get(url);
                                System.out.println("tes " + result);
                                } catch (Exception e) {
                                // TODO: handle exception
                                result = "";    
                                }
                                return result;
                                }
                    @Override
                    protected void onPostExecute(String result) {
                    dialog.dismiss();
                    // TODO Auto-generated method stub
                    super.onPostExecute(result);
//                  Response(result.replace("\n", "").trim());
                    System.out.println("done for Cabang");
                    try {
                        JSONObject jsonObject = new JSONObject(result);

                        JSONArray PRODUK = jsonObject.getJSONArray("BANK CABANG");

                        for (int i=0; i<PRODUK.length();i++){

                            JSONObject spinner = PRODUK.getJSONObject(i);
                                    int LSBP_ID = spinner.optInt("LSBP_ID");
                                    int LBN_ID = spinner.optInt("LBN_ID");
                                    String LBN_NAMA = spinner.optString("LBN_NAMA");
                                helper.InsertCabBank(LSBP_ID, LBN_ID, LBN_NAMA);
//                              ListSpinner.add(VarSpinner);
                                System.out.println("tes VarSpinner");
                            }
                        }catch (Exception e) {
                        Log.d("TES", e.getMessage());
                    }
                    }
                    }

    //spinner produk    
        public class SpinnerTask extends AsyncTask<Void, Void, String>{
//          String url="http://epolicy.sinarmasmsiglife.co.id/ios/spaj_prod.htm?model=1";
            String url="http://128.21.30.37:8080/E-Policy/ios/spaj_prod.htm?type=bancass";
                    public SpinnerTask(){
                        this.url=url;
                        System.out.println(url);
                    }
                    @Override
                    protected void onPreExecute() {
                        super.onPreExecute();
                        dialog=new ProgressDialog(Menu_SPPAJ.this);
//                      dialog = ProgressDialog.show(Menu_SPPAJ.this, "Mohon Menunggu", "Penarikan data Produk..");
                    }
                    @Override
                    protected String doInBackground(Void... params) {
                        // TODO Auto-generated method stub
                                    String result = "";
                                    try {
                                        result = Connection.get(url);
                                        System.out.println("tes " + result);
                                    } catch (Exception e) {
                                        // TODO: handle exception
                                        result = "";    
                                    }
                                    return result;
                                }
                                @Override
                                protected void onPostExecute(String result) {
                                    // TODO Auto-generated method stub
//                                  dialog.dismiss();
                                    super.onPostExecute(result);
                                    fetchResponse(result.replace("\n", "").trim());
                                    System.out.println("done for product");
                                }
                                }

                private void fetchResponse(String result) {
                    if (!result.equals("")) {
                        try {
                            JSONObject jsonObject = new JSONObject(result);

                            JSONArray PRODUK = jsonObject.getJSONArray("PRODUK");

                            for (int i=0; i<PRODUK.length();i++){

                                JSONObject spinner = PRODUK.getJSONObject(i);
                                        String LSBS_ID = spinner.optString("LSBS_ID");
                                        String LSBS_NAME = spinner.optString("LSBS_NAME");
                                    helper.InsertSpin_Produk(LSBS_ID, LSBS_NAME);
//                                  ListSpinner.add(VarSpinner);
                                    System.out.println("tes VarSpinner");

                                    JSONArray PRODUK1 = spinner.getJSONArray("SUB_PRODUK");
                                    for (int j=0; j<PRODUK1.length();j++){
                                        JSONObject sub = PRODUK1.getJSONObject(j);
                                        String LSDBS_NUMBER = sub.optString("LSDBS_NUMBER");
                                        String LSDBS_NAME = sub.optString("LSDBS_NAME");
                                        helper.InsertSpin_SubProduk(LSBS_ID,LSBS_NAME,LSDBS_NUMBER, LSDBS_NAME);

                                        System.out.println("tes VarSpinner 1\2");
                                    }
                                }
                            }
                        catch (Exception e) {
                            Log.d("TES", e.getMessage());
                        }
                    }
                }    
//Rider
    public class RiderTask extends AsyncTask<Void, Void, String>{
            String url="http://128.21.30.37:8080/E-Policy/ios/spaj_prod.htm?type=rider";
                    public RiderTask(){
                        this.url=url;
                        System.out.println(url);
                    }
                    @Override
                    protected void onPreExecute() {
                        super.onPreExecute();
                        dialog=new ProgressDialog(Menu_SPPAJ.this);
                        dialog = ProgressDialog.show(Menu_SPPAJ.this, "Mohon Menunggu", "Penarikan data Rider..");
                    }
                    @Override
                    protected String doInBackground(Void... params) {
                        // TODO Auto-generated method stub
                                    String result = "";
                                    try {
                                        result = Connection.get(url);
                                        System.out.println("tes " + result);
                                    } catch (Exception e) {
                                        // TODO: handle exception
                                        result = "";    
                                    }
                                    return result;
                                }
                                @Override
                                protected void onPostExecute(String result) {
                                    dialog.dismiss();
                                    // TODO Auto-generated method stub
                                    super.onPostExecute(result);
                                    Response(result.replace("\n", "").trim());
                                    System.out.println("done for ridern");
                                }
                                }   
if(isNetworkAvailable()){
新建喷丝头任务().execute();
新建RiderTask().execute();
新建BankTask().execute();
}
//旋转器组
公共类BankTask扩展了AsyncTask{
字符串url=”http://128.21.30.37:8080/E-Policy/ios/spaj_bank.htm?type=pusat”;
公共银行任务(){
this.url=url;
System.out.println(url);}
@凌驾
受保护的void onPreExecute(){
super.onPreExecute();
dialog=新建进度对话框(菜单\u SPPAJ.this);
dialog=ProgressDialog.show(菜单_SPPAJ.this,“Mohon Menunggu”,“Penarikan数据附加条款…”)
@凌驾
受保护字符串doInBackground(无效…参数){
//TODO自动生成的方法存根
字符串结果=”;
试一试{
结果=Connection.get(url);
系统输出打印项次(“tes”+结果);
}捕获(例外e){
//TODO:处理异常
结果=”;
}
返回结果;
}
@凌驾
受保护的void onPostExecute(字符串结果){
dialog.dismise();
//TODO自动生成的方法存根
super.onPostExecute(结果);
//响应(result.replace(“\n”和“).trim());
System.out.println(“为银行完成”);
试一试{
JSONObject JSONObject=新JSONObject(结果);
JSONArray PRODUK=jsonObject.getJSONArray(“银行PUSAT”);

对于(int i=0;i您可以做的是,在第一个
AsyncTask
onPostExecute()上调用第二个
AsyncTask
,依此类推

e、 g

公共类FirstAsyncTask扩展了AsyncTask{
@凌驾
受保护的void onPreExecute(){
super.onPreExecute();
}
@凌驾
受保护的Void doInBackground(Void…参数){
//你的代码
返回null;
}
@凌驾
受保护的void onPostExecute(void结果){
super.onPostExecute(结果);
//新建SecondAsyncTask().execute();
}}
查看该方法。它将并行运行异步任务。但请确保您运行的任务彼此独立。如文档中所述,任务的执行顺序不确定

请这样称呼您的任务:

new SpinnerTask().executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);

是的。
onPostExecute
第一次启动,第二次启动等等……参考可能会对您有所帮助
new SpinnerTask().executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);