hyoromoのブログ

最近はVRSNS向けに作ったものについて書いています

LiveWallpaperの核、Engineのライフサイクルを整理してみたよ

LiveWallpaperはWallpaperServiceを継承したメインクラスから、Engineを継承したLiveWallpaperの核となるクラスから構成されています。
今回はそんな核なクラス、Engineのライフサイクルを整理しました。

LiveWallpaper設定時*1

  1. onCreate
  2. onSurfaceCreated
  3. onSurfaceChanged
  4. onVisibilityChanged

HomeScreenのアクティブ状態が変更された時*2

  1. onVisibilityChanged

HomeScreenにタッチ

  1. onTouchEvent

別のHomeScreenへ移動する

  1. onOffsetsChanged

LiveWallpaper設定解除

  1. onSurfaceDestroyed
  2. onDestroy

まとめ

バッテリーの関係から、onVisibilityChangedメソッドがキモとなります。こちらのメソッド上でHomeScreenが見えていない時に、LiveWallpaperの更新処理を止めてあげないと即バッテリーを消耗してしまいます。
実装方法としては onVisibilityChanged でアニメーションのON/OFFを切り替えればOKな気がします。
あと、onOffsetsChangedの引数xPixelsが現在値を渡してくるので、それを使えば何か楽しいことが出来るかも知れません。

*1:設定画面でも設定時と同じ処理が走る。

*2:別アプリのActivity起動、スクリーンON/OFFなどなど。分かりやすく言えば、Homeが見えているか見えていないか。