1

これは私のアプリケーションです: 1 つのアクティビティ、2 つの AsyncTask (1 回はリクエストを送信し、1 回は応答を待機します)。

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

これをどのように解決できますか?AsyncTask2.doInBackground() が機能しないのはなぜですか?

C/S アプリケーションを作成するためのより良いパターンはありますか?

4

2 に答える 2

1

Read docs on AsyncTask class, it says that since android 3.0 AsyncTasks are serialized:

"Starting with HONEYCOMB, tasks are executed on a single thread to avoid common application errors caused by parallel execution."

So basicly AsyncTask2 is waiting for AsyncTask1 to end which will not happen since it is waiting for connection. You can use executeOnExecutor method to run AsyncTask in paraller - but it is available since API 11.

You should consider using Services or ExecutorService:

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

于 2012-10-21T22:40:34.623 に答える
0

解決策は次のとおりです。

task.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);

それ以外の

task.execute();

Android SDK リンク - エグゼキュータ

于 2012-10-25T07:51:36.170 に答える