1

私はアンドロイドアプリケーションに取り組んでいます。非同期タスクの doinbackground メソッドについて明確にする必要があります。

    Code:

    @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);

            setContentView(R.layout.main);

    LongOperation2 op = new LongOperation2();
                op.execute("");


            }

    public void test1() {
            ArrayList<NameValuePair> postParameters = new ArrayList<NameValuePair>();
            postParameters.add(new BasicNameValuePair("id", id));

            try {
                res1 = CustomHttpClient.executeHttpPost(
                        "http://website.com/folder1/firstpage.php",
                        postParameters);
                System.out.println("response in test1" + res1.trim());

            }

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

        }

  public void test2() {
            ArrayList<NameValuePair> postParameters = new ArrayList<NameValuePair>();
            postParameters.add(new BasicNameValuePair("value", value));

            try {
                res2 = CustomHttpClient.executeHttpPost(
                        "http://website.com/folder1/secondpage.php",
                        postParameters);
                System.out.println("response in test2" + res2.trim());

            }

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

        }

     private class LongOperation2 extends AsyncTask<String, Void, String> {

            @Override
            protected String doInBackground(String... params) {

                test1();
                                        test2();
                return "Executed";
            }

            @Override
            protected void onPostExecute(String result) {
                dialog1.dismiss();
                try {

                                              Test.this.startActivity(new Intent(Page1.this, Page2.class));
                }

                catch (Exception e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }

            }

            @Override
            protected void onPreExecute() {
                dialog1 = ProgressDialog.show(Test.this, "Please wait...",
                        "Retrieving data ...", true);
            }

            @Override
            protected void onProgressUpdate(Void... values) {
            }
        }

上記のコードには、test1() と test2() の 2 つのメソッドがあります。どちらの方法でも、パラメーターを webservice に渡しています。今私の疑問は、非同期タスクの doInBackground() で一度に両方のメソッドを呼び出すことができるかということです。それは大丈夫ですか?これについて私に知らせるか、提案をしてください。前もって感謝します。

4

1 に答える 1

3

2 つ以上のメソッドを呼び出しても問題はありません。ただし、それらは順番に次々と実行されます。doBackground メソッド内にマルチプロセッシングはありません。

于 2013-04-22T17:19:30.217 に答える