这是一个场景...
- 应用程序被打开。
- 用户点击按钮启动服务。
- 用户按home键,然后长按home键并清除任务列表中的应用程序。
- 尽管应用程序已关闭,服务仍在继续运行。
从正在运行的服务中如何确定该应用程序是否已被关闭?这种情况可能吗?
这是一个场景...
从正在运行的服务中如何确定该应用程序是否已被关闭?这种情况可能吗?
我想这就是你要找的内容:
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;
}
首先,您应该启动一个服务,该服务应该在特定时间内查看您的活动是否正在运行。为此,您可以使用Alarm Manager在一段时间后进行检查。
要检查您的活动是否正在运行,您应该使用:
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();
}
public void onCreate(Bundle savedInstanceState) {
isRunning = true;
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
...
}
@Override
public void finish() {
isRunning = false;
super.finish();
}
在你的服务中检查isRunning标志。