【问题标题】:Android socket programming approachAndroid套接字编程方法
【发布时间】:2014-09-06 00:24:33
【问题描述】:

我正在Android中制作一个客户端套接字程序,它可以正确发送和接收数据,但我的问题是客户端运行在Asyntask的“doInBackground”中。我需要客户端从服务器接收到的信息才能继续其他进程,还有我的问题和我需要的方法,我如何让程序等到客户端套接字方法在调用其他方法之前接收到数据?

例子:

1) MyClientTask myClientTask = new MyClientTask(server, port); myClientTask.execute();

2) Do_something_with _data_received();

3) Do_something_else_with _data_received();

在这种方法中,第2点将与客户端套接字同时运行。

提前致谢。

【问题讨论】:

  • 不要“让程序等待”。收到数据后调用相关方法。

标签: android sockets


【解决方案1】:

如果您正在处理片段,请将片段传递给异步任务。 在 doInBackground() 中执行逻辑,然后在 onPostExecute() 中执行 fragment.method()。

onPreexecute 和 onPostExecute 在 UI 线程上运行,doInBackground() 在单独的线程上运行。

提示:您可以用进度(循环)替换视图,直到异步任务完成,

onPostExecute(){
    if(fragment.isAdded()){
       fragment.drawUI();
    }
}

其中 drawUI() 是使您的 layoutView 可见并使其可见的逻辑。

onPostExecute(){

2) Do_something_with _data_received();

3) Do_something_else_with _data_received();

}

提示:不要调用 asynctask 的 .get(),因为它会冻结 UI 线程。

【讨论】:

    猜你喜欢
    • 2014-07-22
    • 2011-08-19
    • 2012-10-28
    • 2010-10-16
    • 1970-01-01
    • 2015-07-28
    • 2013-10-09
    相关资源
    最近更新 更多