(2011-05の一覧)
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

2011-05-29 Sun (他の年の同じ日: 2005 2007)

Serviceの起動状態確認
2011-05-29-1 / カテゴリ: [Android] / [permlink]

ピンポイントで「○○の実行状態取得」ってのはなさそう。
「実行中のサービス一覧取得」があるので、リスト内に対象のクラスが含まれてるか確認する手段で。
1
2
3
4
5
6
7
8
9
10
11
12
public boolean isServiceRunning(Context c, Class<?> cls) {
    ActivityManager am = (ActivityManager) c.getSystemService(Context.ACTIVITY_SERVICE);
    List<RunningServiceInfo> runningService = am.getRunningServices(Integer.MAX_VALUE);
    for (RunningServiceInfo i : runningService) {
        Log.d(TAG, "service: " + i.service.getClassName() + " : " + i.started);
        if (cls.getName().equals(i.service.getClassName())) {
            Log.d(TAG, "running");
            return true;
        }
    }
    return false;
}
こんな感じで。
呼び出し側はContext(Activityとかならthis)と、チェック対象のサービスのClassインスタンスを突っ込めばOK
1
boolean isRunning = isServiceRunning(this, MyService.class);

それにしても RunningServiceInfo#started って何だろう。
IMEなんかがfalseでリストされるけど、trueにしても特に動きがない…

参考
起動中のサービス一覧を取得する - Androidプログラマへの道 〜 Moonlight 明日香 〜 - livedoor Wiki(ウィキ)
前の日 / 次の日 / 最新 / 2011-05

2013 : 01 02 03 04 05 06 07 08 09 10 11 12
2012 : 01 02 03 04 05 06 07 08 09 10 11 12
2011 : 01 02 03 04 05 06 07 08 09 10 11 12
2010 : 01 02 03 04 05 06 07 08 09 10 11 12
2009 : 01 02 03 04 05 06 07 08 09 10 11 12
2008 : 01 02 03 04 05 06 07 08 09 10 11 12
2007 : 01 02 03 04 05 06 07 08 09 10 11 12
2006 : 01 02 03 04 05 06 07 08 09 10 11 12
2005 : 01 02 03 04 05 06 07 08 09 10 11 12
2004 : 01 02 03 04 05 06 07 08 09 10 11 12

最終更新時間: 2013-05-02 16:12

Loading...