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() している
  • ランチャから起動して承認画面が出る
  • 承認拒否したらホーム画面に戻る

なんですが、ここも別途リベンジした方が良いのかどうなのか。