10/10/22 19:47:04
しばらく前にAlarmManagerでRTC_WAKEUP仕込んでるのにServiceちゃんが寝たままなのっっ!!
とやってた172です。
その後くんずほぐれついろいろやったところ、
その1
ServiceのonStart(初回)でWAKE_LOCKを掴んでonDestroyで離してやるようにするとちゃんと
起きる→どちらかというと起きっぱなしなわけですが一応狙った動き。
その2
一旦BroadcastReceiverで受けて、そこからstartServiceしてやる。
BroadcastReceiver#onReceiveでWAKE_LOCKを掴んでService#onStartの終わり(正確にはonStartで起こす
スレッドの末)で離してやると、寝て起きて寝て起きて…となりました。
こちらの方がバッテリの持ちはよさそうです。
敗因はリファレンスにある alarm receiver's onReceive() method が直接 Service#onStart を
呼んでると思いこんでいて、何故に onStart で寝る!とハマったことでした。
実際は中で Intent か何かで非同期に呼んでてonStartが走る頃にはonReceiveは抜けた後→sleep
に入る、となってたようですorz
ひとまず問題解決に至りました。お世話になりました。