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は、my メソッド sendMessage() が呼び出されます。このメソッドの詳細については触れませんが、このメソッドが a を実行することをThread想像してみてください (これが と呼ばれていると仮定しますB)。

したがって、質問は次のとおりです。

A の内部のコードonPostExecute()は、 B ?の終了後に実行されます。AsyncTask Thread

AsyncTaskそうでない場合、 sendMessage()の内部が終了するときにのみ onPostExecute が実行されるようにするにはどうすればよいですか?

4

2 に答える 2

1

それはかなり単純です。それをA のAsyncTask Bと呼ぶだけです。onPostExecuteAsyncTask

編集:ICS以降、スレッド内のスレッドは不可能です。エラーは発生しませんが、機能せず、アプリが動かなくなります。

于 2013-10-02T10:33:15.637 に答える