0

私のアプリでは、API を呼び出して JSON を取得しています。人々が 2g ネットワークを使用している場合やネットワークが切断されている場合、待ち時間が非常に長くなることがあります (特にダイアログを表示する場合)。そのため、たとえば 45 秒後にスレッドを強制終了したいと考えています。

SO を検索したところ、次のスレッドが見つかりました: Running a thread for some seconds

これはこれを行うための最良の方法ですか?

私が持っているコードは次の形式です。

new Thread(new Runnable() {
                public void run() {
                     //i.e.
                    fetchJSON();
                }
            }).start(); 

乾杯!

4

1 に答える 1

1

このためには、HTTP の connection_timeout 機能を実際に使用して、Web 呼び出しをしばらくしてから自動的に終了させる必要があります。例えば:

final int CONNECTION_TIME_OUT = 45;     //in seconds

HttpParams httpPar = new BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(httpPar, CONNECTION_TIME_OUT * 1000);
HttpConnectionParams.setSoTimeout(httpPar, CONNECTION_TIME_OUT * 1000);
HttpClient client = new DefaultHttpClient(httpPar);

これによりclient、リクエストの完了に 45 秒以上かかる場合に、http 接続が自動的に終了します。

于 2013-04-08T12:41:38.210 に答える