1

まだ解決していない問題があり、助けが必要です

Web サービスに接続してデータを取得するアプリを作成し、非同期タスクを使用してそれを行います

ユーザーが再試行するかキャンセルするかを選択できるときに、接続タイムアウト時に警告ダイアログを作成したい。再試行を選択すると、再度接続が試行される

問題は、アラート ダイアログと再試行とキャンセルの方法をどこに配置すればよいかがわからないことです。

ユーザーの入力を待つか、ユーザーが再試行またはキャンセルを選択するまで asynctask を待機させたいのですが、

doinbackground を使用して入れようとしましたrunOnUiThreadが、アラート ダイアログは表示されません。待機または通知を使用すると、エラーが発生しましたpublishProgress()onProgressUpdateobject not locked by thread before wait

onPostExecuteに入れる以外にこれを達成する方法はありますか?

前にありがとう

4

3 に答える 3

2

コードをこのtry/catchに入れ、「例外タイプ」を見つけて、これに従ってダイアログを表示してください。

try
{
    int timeout = 3000;
    URL myURL = //some valid URL

    AndroidHttpClient = AndroidHttpClient.newInstance("name");
    HttpGet httpGet = new HttpGet(myURL.toExternalForm());

    HttpParams httpParams = new BasicHttpParams();
    HttpConnectionParams.setConnectionTimeout(httpParams, timeout);
    HttpConnectionParams.setSoTimeout(httpParams, timeout);

    HttpResponse response = httpClient.execute(httpGet);

    //...
}
catch (SocketTimeoutException e)
{
    e.printStackTrace();
}
catch (ConnectTimeoutException e)
{
    e.printStackTrace();
}
catch (Exception e)
{
    e.printStackTrace();
}
于 2013-10-18T11:53:28.753 に答える
0

onpreexecute で進行状況ダイアログを開始し、onpostexecute で停止し、doinbackgroung で何らかの理由で応答が null になった場合は、onpostexecute でアラートを表示し、アラート ダイアログ アクションから ayntask を再度呼び出します。

于 2013-10-18T11:39:39.720 に答える