365連休

にわかのandroidとかの開発メモ。

【解決?】Android Studio Arctic Fox WorkerでsetForegroundAsync()した通知が消えない

前提

  • Gradle 7.2
  • Android Gradle Plugin 7.0.2
  • androidx.work:work-runtime:2.6.0

 

事案

長時間Workerのために、setForegroundAsync()した通知がdoWork終了後に残り、通知を消せなくなる場合がある。

※KotlinでsetForegroundAsync()に相当するsetForeground()については確認していない。

 

setForegroundAsyncという名の通り、非同期で通知を上げ、それがForegroundService扱いでタスクキルされない仕組みのようである。

 

通知が非同期表示される前に、doWorkが終了した場合、当該事案が発生した。

 

developer.android.com

 

 

 

解決?

stackoverflowにて投稿を発見。

stackoverflow.com

 

その中の自己解決の書き込みによると、

Google Trackerにて

setForegroundAsync(ForegroundInfo).get();

すると、getコールで同期的に通知が上がるよ~

と回答があったらしい。 ※ログ不明

 

しかしThis not working for meというレスもついているため、

おまじないとして、doWork終了前にsetForegroundAsync().get()をコールすると幸せになれるかもしれない。

 

以上。