LiveWallpaperはWallpaperServiceを継承したメインクラスから、Engineを継承したLiveWallpaperの核となるクラスから構成されています。
今回はそんな核なクラス、Engineのライフサイクルを整理しました。
LiveWallpaper設定時*1
- onCreate
- onSurfaceCreated
- onSurfaceChanged
- onVisibilityChanged
HomeScreenのアクティブ状態が変更された時*2
- onVisibilityChanged
HomeScreenにタッチ
- onTouchEvent
別のHomeScreenへ移動する
- onOffsetsChanged
LiveWallpaper設定解除
- onSurfaceDestroyed
- onDestroy
まとめ
バッテリーの関係から、onVisibilityChangedメソッドがキモとなります。こちらのメソッド上でHomeScreenが見えていない時に、LiveWallpaperの更新処理を止めてあげないと即バッテリーを消耗してしまいます。
実装方法としては onVisibilityChanged でアニメーションのON/OFFを切り替えればOKな気がします。
あと、onOffsetsChangedの引数xPixelsが現在値を渡してくるので、それを使えば何か楽しいことが出来るかも知れません。