Juice Defender については、大きな勘違いをしていた事がわかったので、基本的には消極利用に切り替えました。
代わりに、3G Watchdog Pro を積極的に使おうかと思っていますが、これにも限界がありそうです。
http://3gwatchdog.fr/faq/106-what-is-the-restrict-background-data-to-wifiq-feature-pro-version
によれば、アプリのバックグラウンド通信を、Wifiのみに制限という機能は、実際に通信を開始したプロセスをkillするだけみたいなので、ちょっとは通信しちゃうよって書いてあります。 ICSでは、フォアグラウンドアプリは root でしか停止できないので、対象が background だけなのは全く構わないのですが、ここにも書いてあるように、殺しても殺しても生き返ってくるゾンビのようなFacebookアプリなんかだと効かないぜって事です。 むしろ何度も生き返ってくる為にバッテリー消費という点ではマイナスかもしれません。
いろいろやってみて、目的を少し整理すると(実はここ数日でかなりトーンダウンしているが…)
- Wifi の時は構わなくても良い
- フォアグラウンドアプリについては、構わなくても良い
- バックグラウンドアプリでも、GCM(プッシュ)については、構わなくても良い
- C2DMは、GCMの前身だが、今どうなっているのかわからない。GCMと別に動いているなら止めたいものだが、任意に止められるものでもなさそうだし、そのうち廃止になるみたいなので気にしないことにする。
- バックグラウンドアプリのGCM以外の通信は止めたい
ということになる。これは、結局のところ、3G Watchdog Pro の、Wifiのみに制限する機能に近く、しかし、このアプリでさえ、もぐら叩き方式でしか対処できないので、そのあたりが root 無しで制御可能な限界なんだと思う。
結局のところ、GCMが15分間隔で、KeepAliveしている以上、データ通信をOFFにしなければ、15分間隔で多少なりとも通信は発生しているわけだから、それを許容できるかどうかが分岐点で、(おそらく電力上の見地から)許容できない場合は、データ通信を必要な時だけONにするという使い方をせざるおえず、それをある程度良きに計らってくれるのが、Juice Defender ってことになるかな。
ちょっと思いついた方法だと、JD をOn にしておいて、基本 display off で通信OFFにして、アプリごとの設定を有効として、例えば、GMailだけは、enable/screen off にしておいた上で、Display off でも、GMailだけはリアルタイムで受けたいと思っている間は、GMailをフォアグラウンドにした状態でDisplay off にすれば、JDは通信を切断しないので、ディスプレイOFFの時にどのアプリをフォアで起動した状態にしておくかで、通信off するかどうかを制御できると思う。私の様にすぐにランチャーに戻すクセのあるユーザには不向きではあるが、逆に、切りたくない時は意図的にGMailをアクティブにするということで良いかもしれない。なお、この時、設定するあぷりはどれか一つで良い。LINEの為に通信をONにしておきたい場合でもGMailだけ設定して、GMailをフォアにしてsceen off にすれば通信は切れない。 私の場合はそのアプリとして、Google Play Music のプレイヤーにしてみた。 理由は、GMailだと画面が専有されるが、プレイヤーは画面無しの通知エリアだけでフォアになるし、ランチャーに戻しただけでは停止しないし、データ通信でメールをリアルタイムで受けたい時って、音楽を聴いているかどうかに関わらず、プレイヤー起動しているときと結構ダブルので…
しかし、こういった事、iOSでは、そもそもできないので諦めがつくけど、Android はなんか出来そうな感じがするので、はまってしまう気がする。最近こんなことの確認の為にスマホばっかり見ているので、みかこさんから冷たい目でみられている為、そろそろ、妥協点を見出したいところだ。