Android Chromeのjavascriptは裏側でも動き続ける

こんにちは、ころすけ(@wg_koro)です。

AndroidのChromeブラウザ

AndroidのChromeブラウザで変な挙動を発見しました。一応メモしておきます。

javascriptが止まらない

Chromeでページを見ている最中に、別のアプリに切り替えてもjavascript(js)が止まりません。

例えば下記のjsを仕込んだページ。

[javascript]
setInterval(function(){ console.log(‘Oh my god!’); }, 1000);
[/javascript]

このページをChromeで表示して、ホームボタンを押してみましょう。あるいは、別アプリに切り替えてみましょう。

Chromeは裏側に回ったのに、’Oh my god!’ という文言を1秒おきに出力し続けます。これはsetIntervalだけでなく、setTimeoutでも確認できます。

試しにここにAjax通信を仕込んだら、裏側に回っても1秒おきに通信してました。

デフォルトのブラウザ

ちなみにデフォルトのAndroidブラウザだとこうなりません。

ブラウザが前面に出ている時は、jsは当然動きます。しかしホームボタンを押したり、別アプリに切り替えたりしてブラウザを裏側に移動させると動作が停止します。ブラウザを再度前面に表示させるとjsは再び動き出します。

バグ?仕様?

うーん、これってバグなんですかね?それとも仕様?

初期のAndroid Chrome(ベータ版)でも同じ挙動でした。裏側で動き続けるのは正しいような気もするし、でも標準ブラウザと比べると間違っている気もするし…。どっちだろう?

裏側にまわっても通信し続けるとなるとバッテリー食うだろうし・・・。やっぱりバグなんだろうか。

ちょっとIssue探して、なければ投稿してみようかな。

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください