Androidアプリケーション内のデータを定期的にWebと同期させたい場合、サービスを起動してバックグラウンドでサーバーと同期するのが一般的であるが、その処理を許可するかどうかはAndroid端末の設定にある「バックグラウンドデータ」という項目でON/OFFの指定ができるようになっている。
ただし、この設定が期待した通りに機能するかどうかはインストールしたアプリケーションの実装次第のようだ。
設定したバックグラウンドデータの値はConnectivityManagerのgetBackgroundDataSetting()というメソッドで取得できるのだが、ここのドキュメントを読むと
「戻り値がfalseの場合、アプリケーションがフォアグランンドでなければネットワークを使用すべきではない。開発者はバックグラウンドでデータを処理する前に値をチェックし、この設定を尊重すべきである」
http://developer.android.com/intl/ja/reference/android/net/ConnectivityManager.html#getBackgroundDataSetting()
というような事が書いてある。つまりはOS側に強制力はなく、アプリ開発者の努力目標ということだ。
実際にテストコードを書いてみたところ、設定で「バックグラウンドデータ」を無効にしていてもサービスからWebに接続することができた。
パケット定額に入っているユーザーなら別に問題はないのだが、従量課金の場合でインストールしたアプリにバックグラウンドで動作するサービスがあり、かつそれがこの設定を考慮しない作りになっていると、「バックグラウンドデータ」を無効にしていても勝手に接続されているといったケースが発生しているのではないか。