サーバーをポーリングする Android アプリを作成したいと考えています。ネットワーク送信を開始すると(現在ネットワークトラフィックがない場合)、余分なバッテリーが必要になると思います。そのため、ネットワーク トラフィックがすでに存在するときにポーリングを行う方が、エネルギー効率が高くなる可能性があります。
私の質問:
- 「ネットワークトラフィックが発生するまで待機するためにバッテリーを節約する」という私の仮定は正しいですか?
- ポーリングを行う適切なタイミングが来たことをアンドロイドで確認する方法はありますか?
私がこれまでに知っていること:
ネットワーク ステータスの変更 (wlan/gprs の有効化/無効化) を通知する CONNECTIVITY_CHANGE-broadcastreceiver を登録できます。
IntentFilter filterc = new IntentFilter("android.net.conn.CONNECTIVITY_CHANGE");
registerReceiver(ConnectivityCheckReceiver, filterc);
ここに放送受信機があります
public final BroadcastReceiver ConnectivityCheckReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
String type;
ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo TestCo = connectivityManager.getActiveNetworkInfo();
if(TestCo == null)
isLanConnectedNewValue = false;
else
isLanConnectedNewValue = true;
NetworkInfo networkInfo = (NetworkInfo) intent.getParcelableExtra(ConnectivityManager.EXTRA_NETWORK_INFO);
if(networkInfo.getType() == ConnectivityManager.TYPE_WIFI)
type = "Wifi";
else if(networkInfo.getType() == ConnectivityManager.TYPE_MOBILE)
type = "umts/3g";
else
type = "other";
if(isLanConnectedNewValue & !isLanConnected){
// good candidate to do polling
}
isLanConnected = isLanConnectedNewValue;
}
};
ネットワークが現在使用されているかどうかを確認する方法はありますか?