50

Serviceアプリケーションの1つがActivityフォアグラウンドで実行されているかどうかを確認するにはどうすればよいですか?

4

9 に答える 9

64

パッケージ名で以下のメソッドを使用します。アクティビティのいずれかがフォアグラウンドにある場合は true を返します。

public boolean isForeground(String myPackage) {
    ActivityManager manager = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
    List<ActivityManager.RunningTaskInfo> runningTaskInfo = manager.getRunningTasks(1); 
    ComponentName componentInfo = runningTaskInfo.get(0).topActivity;
    return componentInfo.getPackageName().equals(myPackage);
}

アップデート:

権限を追加:

<uses-permission android:name="android.permission.GET_TASKS" />
于 2012-08-29T06:44:07.617 に答える
-1

AndroidでgetRunninTasksを取得し、タスクが実行されているかどうかをパッケージ名で確認できると思います。

public boolean isServiceRunning() { 

ActivityManager activityManager = (ActivityManager)Monitor.this.getSystemService (Context.ACTIVITY_SERVICE); 
List<RunningTaskInfo> services = activityManager.getRunningTasks(Integer.MAX_VALUE); 
isServiceFound = false; 
for (int i = 0; i < services.size(); i++) { 
    if (services.get(i).topActivity.toString().equalsIgnoreCase("ComponentInfo{com.lyo.AutoMessage/com.lyo.AutoMessage.TextLogList}")) {
        isServiceFound = true;
    }
} 
return isServiceFound; 
} 
于 2012-08-29T06:38:30.037 に答える