【Delphi】Androidサービス開発記録

・AndroidサービスのStartやBindはActivity(UI付きアプリ)のメインスレッドで動いている。
・バックグラウンド常駐アプリはメモリが減ると勝手に止められるため、常駐必須なアプリはフォアグラウンドにする必要がある。

〇サービスを別スレッドで動かす方法


AcrivityのメインスレッドでTimerを1秒間隔で動かし、現在時刻を表示するテスターを作成。
その上でActivityでThreadを作成してサービスを呼び出す処理を作ってみたが、StartServiceもBindServiceもサービスが処理している間はTimerも止まっていた。
次にサービス側でThreadを作成してループを回し、StartServiceでループの中の処理が開始されるようフラグをオンにする形に変更。
こちらはThreadも動きつつStartServiceが完了後はTimerも動き始めた。
他にやり方があるのかもしれないが、常駐サービスを作るにはサービス側でスレッドを作成することで実装可能。

〇フォアグラウンドにする手順

AndroidManifest.template.xmlを編集し、フォアグラウンド通知の権限を与える。↓を追加
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />

https://stackoverflow.com/questions/60466609/start-foreground-service-in-delphi-10-3
ここを参考にフォアグラウンド化を実装。

この記事が気に入ったらサポートをしてみませんか?