0

私のアプリケーションには、アプリが常にインターネットに接続されている必要があるという要件があります (2G/3G のみ)。これを実現するには、デバイスがインターネットに接続されているかどうかを確認し続けるサービスを作成できます。そうでない場合は、プログラムでインターネットに接続できます(これは、私のアプリがユーザーの操作が非常に少ない環境で動作するため、ほとんどのことが自動的に行われるはずです)。「サービス」アプローチは問題ありませんが、絶え間ないポーリングのためにかなりのバッテリーを消費します。これは避けたいと思います。

CONNECTIVITY_ACTION最近、システムが生成する- というブロードキャストについて読みました。ドキュメントによると、デバイスの接続の変更は非常に頻繁に発生する可能性があります。このブロードキャストは、モバイル データと Wi-Fi の間を移動するたびにトリガーされます。.

私の要件では、デバイスは 2G/3G にのみ接続され、wifi には接続されません。2G/3G のみへの接続 (オン/オフ) の変更を知ることができるシステムからのブロードキャストはありますか? 上記の引用によると、状態がモバイルデータ (2g/3g) から wifi に変化した場合にのみ CONNECTIVITY_ACTION が起動されると推測されます。そうですか(間違っていたら訂正してください)。

また、デバイスが常にインターネット (2g/3g) に接続されていることを (サービスベースのアプローチ以外で) 確認するために使用する最も効率的なアプローチを教えてください。自動的にインターネット?前もって感謝します !

4

2 に答える 2

1

上記のブロードキャストは、完全に切断されたときに送信されます。ドキュメントでも言及されています

切断イベントの場合、接続されたネットワークがまったくない場合、ブーリアンのエクストラ EXTRA_NO_CONNECTIVITY が true に設定されます。

CONNECTIVITY_ACTIONデバイスを再接続するために必要なことは何でも聞くだけです。

完全なドキュメント: https://developer.android.com/reference/android/net/ConnectivityManager.html#CONNECTIVITY_ACTION

于 2013-12-10T04:01:26.133 に答える