0

假设我使用以下AsycTask(称为A)通过互联网发送数据:

private class A extends AsyncTask<Void, Void, Void>{
    @Override
    protected void onPreExecute() {
        // TODO Auto-generated method stub
        super.onPreExecute();
        pd = ProgressDialog.show(context, "Notification", "Sending message...");
    }

    @Override
    protected Void doInBackground(Void... params) {
        // TODO Auto-generated method stub
        sendMessage();
        return null;
    }

    @Override
    protected void onPostExecute(Void result) {
        // TODO Auto-generated method stub
        super.onPostExecute(result);
        if(pd!=null && pd.isShowing())
            pd.dismiss();           
    }
}

在里面doInbackground被称为我的方法sendMessage()。我不会详细介绍这个方法,只是想象这个方法执行一个Thread(假设它被称为B)。

所以,问题是:

AonPostExecute()里面的代码会在B结束后执行吗?AsyncTask Thread

如果没有,如何使 onPostExecute 仅在AsyncTasksendMessage() 内部终止时才执行?

4

2 回答 2

1

嗯,这很简单。只需调用AsyncTask AonPostExecuteAsyncTask B 即可

编辑:从 ICS 开始,线程内的线程是不可能的。它不会给你任何错误,但它也不会工作,你的应用程序会卡在那里。

于 2013-10-02T10:33:15.637 回答
1

你可以让sendMessage()返回线程对象,然后调用

Thread.join()

这将导致doInBackground等待线程完成。

于 2013-10-02T10:57:49.653 回答