-4

我有一个问题,我编写了类似的代码

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(); 之前执行的 Toast;是否有任何等待此 .execute() 方法的属性。

编辑:我为 globle 变量分配了一些值,在执行后我只想比较这个值。所以我只放了 Toast 消息。

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 回答