如何在Android中等待执行方法

时间:2013-07-05 13:20:48

标签: android android-asynctask

我有一个问题,我编写的代码如

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()启动代码就像不等待它意味着Toast就像在执行SomeClass()之前执行一样.execute();有没有等待这个.execute()方法的属性。

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

2 个答案:

答案 0 :(得分:5)

如果您希望在工作完成后显示Toast逻辑,请将其移至onPostExecute()

答案 1 :(得分:0)

在异步任务上调用get()实际上会使它不再异步并阻塞主线程。

来自android docs

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

注意这不是一个好主意,因为你永远不应该阻止主线程。

用法:

new SomeClass().execute().get();