-4

次のようなコードを書いた問題が1つあります

private class SomeClass extends AsyncTask {
    @Override
    protected void onPreExecute() {
            super.onPreExecute();
            pDialog = new ProgressDialog(CheckOutActivity.this);
            pDialog.setMessage(getText(R.string.wait));
            pDialog.setIndeterminate(false);
            pDialog.setCancelable(true);
            pDialog.show();
        }
    @Override
    protected Void doInBackground(Void... arg0) {
//some code
}
@Override
        protected void onPostExecute(final Void unused) {
            if (pDialog.isShowing()) {
                pDialog.dismiss();
            }
        }
}
私はこのようにクラスを実行し
new SomeClass().execute();
Toast.makeText(getApplicationContext(), "msg msg", Toast.LENGTH_SHORT).show();
ます私の質問は、.execute() が待機しないようにコードを開始するときです。これは、SomeClass().execute(); この .execute() メソッドを待機するためのプロパティはありますか。

編集:いくつかの値をgloble変数に割り当てます。この実行後、この値を比較したいだけです。だから私はトーストメッセージを入れただけです。

4

2 に答える 2

5

作業の完了後にロジックを表示する場合は、Toastロジックを に移動します。onPostExecute()

于 2013-07-05T13:23:37.783 に答える
0

非同期タスクを呼び出すget()と、基本的に非同期ではなくなり、メイン スレッドがブロックされます。

アンドロイドのドキュメントから

Waits if necessary for the computation to complete, and then retrieves its result.

メインスレッドをブロックしてはならないので、これはあまりお勧めできません。

使用法:

new SomeClass().execute().get();
于 2013-07-05T13:27:59.173 に答える