如何确定应用程序是否正在从服务运行

时间:2012-12-13 11:07:57

标签: android android-intent service intentservice

这是方案......

  1. 应用程序已打开
  2. 用户点击启动服务的按钮。
  3. 用户按下主页键,然后长按主页键并从任务列表中清除应用程序。
  4. 虽然应用程序已关闭,但服务仍在继续运行。
  5. 如何从运行服务中确定该应用程序是否已被杀死?这可能吗?

3 个答案:

答案 0 :(得分:1)

我认为这就是你要找的东西:

 private boolean isAppRunning() {
    ActivityManager manager = (ActivityManager) mContext.getSystemService(Context.ACTIVITY_SERVICE);
    for (RunningTaskInfo task : manager.getRunningTasks(Integer.MAX_VALUE)) {
        if ("com.example.YourLauncherActivityClassFullName".equals(task.baseActivity.getClassName())) {
            return true;
        }
    }
    return false;
}

您唯一需要提供的是应用的完整启动器活动类名称。

答案 1 :(得分:0)

首先,您应该启动一项服务,该服务应该在特定时间内查看您的活动是否正在运行。为此,您可以在一段时间后使用警报管理器进行检查。

要检查您的活动是否正在运行,您应该使用

ArrayList<String> runningactivities = new ArrayList<String>();

    ActivityManager activityManager = (ActivityManager)getBaseContext().getSystemService (Context.ACTIVITY_SERVICE); 

    List<RunningTaskInfo> services = activityManager.getRunningTasks(Integer.MAX_VALUE); 

        for (int i1 = 0; i1 < services.size(); i1++) { 
            runningactivities.add(0,services.get(i1).topActivity.toString());  
        } 

        if(runningactivities.contains("ComponentInfo{com.app/com.app.main.MyActivity}")==true){
            Toast.makeText(getBaseContext(),"Activity is in foreground, active",1000).show(); 

        }

答案 2 :(得分:0)

在你的主要(第一)活动中:

public static boolean isRunning;

@覆盖

public void onCreate(Bundle savedInstanceState) {

    isRunning = true;
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    ...
}
@Override

public void finish() {
    isRunning = false;
    super.finish();
}

检查服务中的isRunning标志。