Experiments Never Fail

Service が Foreground で動いているか確認する

Android で「死ににくいサービス」を作るには [Service.startForegound](http://developer.android.com/reference/android/app/Service.html#startForeground(int, android.app.Notification) を呼び出す必要がありますが、動いてるサービスがちゃんと「Foregound になってるか?」は以下のようにして確認できます。(Notification 表示が強制されるから通知バー見ればいいじゃん、と言われればそうなんですけど、ちゃんとしたエビデンスっぽいのが欲しくて)

手順 #

adb shell dumpsys activity s <サービス名>

<サービス名> はサービスの完全名称を入れます。AndroidManifest.xml の <service android:name= で定義したやつ。

実行すると以下のように出力されます。

ACTIVITY MANAGER SERVICES (dumpsys activity services)
User 0 active services:

isForegound=true と表示されているので、確かに「このサービスはフォアグラウンドだ」と分かります。サービス側で startForeground を呼び出さなかった場合は、この項目は表れません。

dumpsys 今までコマンドめんどいと思ってあまり使ってませんでしたすいませんでした(汗

参考 #

大変参考になりました。

published at tags: Android