2017-08-12 22 views
1

私のアプリケーションでは、ネットワーク操作がほとんどありません。例 - データベース操作、ファイルの送受信など。これらのアクティビティの実行時間を制限するにはどうすればよいですか?たとえば、サーバーへのファイル転送操作が1分以内に完了しない場合は、その操作を中止して残りのコードの実行を続けます。これについて少し参考にしてもいいですか?アンドロイドでのネットワークアクティビティの実行時間を制限する方法は?

答えて

1

httpクライアントのタイプに応じて、操作のタイムアウトを設定してタイムアウト例外を処理できます。ここで

OkHttpでタイムアウトを処理するために、どのように良い説明は次のとおりです。 client.setConnectTimeout(10, TimeUnit.SECONDS); client.setReadTimeout(30, TimeUnit.SECONDS);

  • タイムアウト例外に設定されたハンドラ(上記の例のように、あなたのHTTPクライアントに好むRetrofit and OkHttpClient, catch connection timeout in failure method

    1. セットタイムアウト、あなたのhttpクライアントに依存します)。

    カスタム操作が必要な場合は、タイムアウト処理、あなたがタイムアウトしてバックグラウンド操作を拡張するために、一般的なソリューションを実装することができますので、アイデアのかなり興味深い説明を見つけることができ、バックグラウンド操作が完了したかどう追跡するエグゼキューを使用することができますここに:ExecutorService that interrupts tasks after a timeout

    ハッピーコーディング!あなたは、次のコードの助けを借りることができます

  • 0

    HttpURLConnection urlc = (HttpURLConnection) urlConnect.openConnection(); 
    urlc.setConnectTimeout(1000); //milliseconds 
    urlc.setReadTimeout(1000); //milliseconds 
    

    Javaのマニュアルによると:

    のconnecttimeout

    が使用されるように、ミリ秒単位で指定されたタイムアウト値を設定します。このURLConnectionによって参照されるリソースへの通信リンクを開くとき。接続が確立される前にタイムアウトが切れると、java.net.SocketTimeoutExceptionが発生します。タイムアウトがゼロの場合、無限のタイムアウトと解釈されます。

    readTimeout

    ミリ秒単位で指定されたタイムアウトまでの読み取りタイムアウトを設定します。 0以外の値は、接続がリソースに確立されたときに入力ストリームから読み取るときのタイムアウトを指定します。読み取り可能なデータがある前にタイムアウトが切れると、java.net.SocketTimeoutExceptionが発生します。タイムアウトがゼロの場合、無限のタイムアウトと解釈されます。

    0

    okHttpをAndroid 4.4のHttpURLConnectionに使用することをお勧めします。 コードは次のとおりです - >

    OkHttpClient client = new OkHttpClient(); 
    client.setConnectTimeout(15, TimeUnit.SECONDS); // connect timeout 
    client.setReadTimeout(15, TimeUnit.SECONDS); // socket timeout 
    
    関連する問題