Service に関する備忘
色々思い出したくないのですが肝心な部分のみ控えを。
- startService の受け先は onStartCommand 使うこと
- startService は Intent の ACTION で処理を分けて開始や終了などの処理を行なわせた方が良い。stopService で onDestroy メソドが動くとかお伽話らしい
- onStartCommand では例えば Service.START_REDELIVER_INTENT とか戻すと引数の intent が null の場合がある (それはシステム側で再起動したことを意味する) のでそれを考慮した書き方をすること
- on{Start, StartCommand} における開始処理において Notification 作って startForeground メソドを呼び出してやることで起動したサービスは死ににくくなる
あと、Service と関係ないですが、Screen Off を解除 (FULL_WAKE_LOCK な wakelock を云々) するナニでしたので ACTION_SCREEN_OFF とか ACTION_SCREEN_ON な BroadcastIntent を捕まえて処理してみたのですが効果のほどは不明。
最後らへんで実機からのログが確認できてたみたいなので、このあたりも調査してみたら良いかもしれない、と思いつつどうするかは不明です。
む
昼間に云々してたソレですがどうも納得いかない。手元の端末に入れてるソレは
- アプリのランチャから起動して DevicePolicyManager#lockNow() している
- ランチャから起動して承認画面が出る
- 承認拒否したらホーム画面に戻る
なんですが、ここも別途リベンジした方が良いのかどうなのか。