前人未踏の領域へ Androidアプリ開発編

Androidアプリ開発に関する調査メモ置き場。古い記事にはアプリ以外も含まれます。

バックグラウンドデータに関する注意点

Androidアプリケーション内のデータを定期的にWebと同期させたい場合、サービスを起動してバックグラウンドでサーバーと同期するのが一般的であるが、その処理を許可するかどうかはAndroid端末の設定にある「バックグラウンドデータ」という項目でON/OFFの指定ができるようになっている。

ただし、この設定が期待した通りに機能するかどうかはインストールしたアプリケーションの実装次第のようだ。

設定したバックグラウンドデータの値はConnectivityManagerのgetBackgroundDataSetting()というメソッドで取得できるのだが、ここのドキュメントを読むと

「戻り値がfalseの場合、アプリケーションがフォアグランンドでなければネットワークを使用すべきではない。開発者はバックグラウンドでデータを処理する前に値をチェックし、この設定を尊重すべきである」
http://developer.android.com/intl/ja/reference/android/net/ConnectivityManager.html#getBackgroundDataSetting()

というような事が書いてある。つまりはOS側に強制力はなく、アプリ開発者の努力目標ということだ。

実際にテストコードを書いてみたところ、設定で「バックグラウンドデータ」を無効にしていてもサービスからWebに接続することができた。

パケット定額に入っているユーザーなら別に問題はないのだが、従量課金の場合でインストールしたアプリにバックグラウンドで動作するサービスがあり、かつそれがこの設定を考慮しない作りになっていると、「バックグラウンドデータ」を無効にしていても勝手に接続されているといったケースが発生しているのではないか。