客户端/服务器Android应用程序:两个AsyncTask。问题

时间:2012-10-21 22:35:36

标签: android sockets android-asynctask

这是我的应用程序:1个Activity,2个AsyncTask(一次发送请求,一次等待响应)。

1) onCreate()
    AsyncTask1.execute() 
    - AsyncTask1.doInBackground() wait for incomng connection. Works!
2) onClick()
    AsyncTask2.execute()
    - AsyncTask2.doInBackground() never executed.

怎么能解决这个问题?为什么AsyncTask2.doInBackground()不起作用?

创建C / S应用程序有更好的模式吗?

2 个答案:

答案 0 :(得分:1)

阅读AsyncTask类的文档,它说自从android 3.0 AsyncTasks被序列化后:

“从HONEYCOMB开始,任务在单个线程上执行,以避免因并行执行而导致的常见应用程序错误。”

所以基本上AsyncTask2正在等待AsyncTask1结束,因为等待连接不会发生。您可以使用executeOnExecutor方法在paraller中运行AsyncTask - 但它自API 11开始可用。

您应该考虑使用Services或ExecutorService:

http://developer.android.com/reference/java/util/concurrent/ExecutorService.html

答案 1 :(得分:0)

解决方案是:

task.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);

而不是

task.execute();

Android SDK Link - Executor