暂停UI,同时在AsyncTask中更新postExecute上的数据

时间:2016-03-17 19:05:30

标签: java android sockets android-asynctask

我在我的应用中使用套接字。我创建了一个类SocketClient,其中包含以下方法:onConnectonSendDataonReadData。方法onReadData扩展AsyncTask。它等待来自doInBackground内的服务器的字符串消息,然后创建一个新任务来侦听传入消息。现在我想在加载消息时暂停我的MainActivity类中的UI并获取它,但不知道如何做到这一点。我的异步任务看起来像:

 public void ReadMyData() {
        mt = new ReadDataAsync();
        mt.execute();
    }


    class ReadDataAsync extends AsyncTask<String, Void, String> {
        @Override
        protected String doInBackground(String... params) {
           // a lot of work
                return message;
        }

        @Override
        protected void onPostExecute(String result) {
            ReadMyData();
        }
    }

和MainActivity:

public SocketClient mySocketClient = new SocketClient();
protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                mySocketClient.onConnect();
                   //there I need wait message load and take it
                setContentView(R.layout.activity_game);
                WorkWithMessage(message);}

1 个答案:

答案 0 :(得分:0)

创建进度DIALOG并在知道正在加载消息时启动它,而不是在加载消息时将其取消。

您可以像这样创建进度对话:

ProgressDialog pd = New ProgressDialog();
pd.setTitle(”title”);
pd.setMessage(”messgae”);
pd.setCancleable(false);

比打电话

pd.show();

当您要加载消息时,

pd.dismiss();

当你完成。