59

ユーザーがサーバーに情報やファイルを頻繁にアップロードするアプリを作成しています。これは、専用のアップローダ サービスを介して新しいスレッドで行われます。

このスレで知った

Android で利用可能なインターネット接続があるかどうかを検出する

比較的簡単にインターネットに接続されているかどうかを確認できます。インターネット接続の問題を検出するために socketTimeoutExceptions を取得することもできます。なんらかの理由で接続が機能しなかった場合でも、アップロードを簡単にキャッシュできます。

私の質問は、アップロードをいつ再試行するかをどのように知ることができますか? 接続が復元されたときにトリガーされるイベントはありますか? それとも、スリープしてから30秒ごとにインターネット接続をチェックする新しいスレッドを作成するのに行き詰まっていますか?

どんなアイデアでも大歓迎です!

4

4 に答える 4

11

Android Nougat & O (API 24+) - ネットワーク状態

API 24+で動作するように @darnmason の回答 (コンストラクター) に変更を加えました。

public NetworkStateReceiver(Context context) {
    mListeners =  new ArrayList<>();
    mManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);

    IntentFilter intentFilter = new IntentFilter();
    intentFilter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
    context.registerReceiver(NetworkStateReceiver.this, intentFilter);

    checkStateChanged();
}
于 2017-07-11T10:38:08.403 に答える