ひらい ぶらり Hi-Library

ぷろぐらみんぐについて。ときどきどうでもいいことについて。

WebViewを使うと電池の消耗が激しい時の解決方法

androidアプリを開発していて、特に変更した覚えがないのにレビューに「電池の消費が激しい、アンインストールした」
とか書かれてたので
「今回のアップデートではWebViewの初期URLを変更しただけでそんなことがあるわけ」
あった

で、実際変更は上記の通り、初期URLを変更しただけ。
ただし、そのURLで表示されるページが画像がスライドするJavaScriptが二箇所ほどある結構CPUを食うページでした。
DDMSでチェックしてみると、アプリがBackgroundに入ってもWebViewが動いてる・・・どういうことなの・・・
と思って調べてみると、アプリがbackgroundに入ってもWebViewを動かす必要がないときはonPauseとonResumeできちんとWebViewを一時停止してやらないといけないようでした。
レビューしてくれた人すいません。気づいてくれてありがとうございます。



[参考]WebViewでgifアニメを表示してるとWebViewCoreThreadが動き続ける
http://starzero.hatenablog.com/entry/20120716/1342421720

@Override
protected void onResume() {
    super.onResume();
    mWebView.resumeTimers();
}

@Override
protected void onPause() {
    super.onPause();
    mWebView.pauseTimers();
}

追記
resumeTimers pauseTimers を使う時の注意 - ひらい ぶらり Hi-Library

追記の追記
そもそもandroid3.0 以上ならば、WebViewにはonPauseとonResumeが実装されていて、個々のインスタンスで勝手に一時停止されるようです。未検証。