LoginSignup
12
10

More than 5 years have passed since last update.

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

Posted at

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:
* ServiceRecord{41b2dd18 u0 com.amay077.android.gpsfaker/.service.GpsSignalService}
intent={cmp=com.amay077.android.gpsfaker/.service.GpsSignalService}
packageName=com.amay077.android.gpsfaker
processName=com.amay077.android.gpsfaker
baseDir=/data/app/com.amay077.android.gpsfaker-1.apk
dataDir=/data/data/com.amay077.android.gpsfaker
app=ProcessRecord{416e19e8 3209:com.amay077.android.gpsfaker/u0a10072}
isForeground=true foregroundId=2130968576 foregroundNoti=Notification(pri=0 contentView=com.amay077.android.
(以下省略)

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

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

参考

大変参考になりました。

12
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
10