Android服务,检测用户是否打开了任何应用程序,并在后台启动计时器

Android服务,检测用户是否打开了任何应用程序,并在后台启动计时器,android,android-studio,android-service,Android,Android Studio,Android Service,启动服务的应用程序,该服务在后台持续运行,直到用户希望终止。如何检测是否打开或关闭了任何其他应用程序?我想为不同的应用启动一个独特的计时器。最后存储所有日志。任何帮助都将不胜感激。 谢谢..只需使用ActivityManager获取当前正在运行的任务 ActivityManager mActivityManager= (ActivityManager) mContext .getSystemService(Activity.ACTIVITY_SERVICE); if(Bu

启动服务的应用程序,该服务在后台持续运行,直到用户希望终止。如何检测是否打开或关闭了任何其他应用程序?我想为不同的应用启动一个独特的计时器。最后存储所有日志。任何帮助都将不胜感激。
谢谢..

只需使用ActivityManager获取当前正在运行的任务

ActivityManager mActivityManager= (ActivityManager) mContext
            .getSystemService(Activity.ACTIVITY_SERVICE);
if(Build.VERSION.SDK_INT > 20)
{
   String mPackageName = mActivityManager.getRunningAppProcesses().get(0).processName;
}
else
{
   String mpackageName = mActivityManager.getRunningTasks(1).get(0).topActivity.getPackageName();
}
您还可以检测应用程序进程的更改
另请参见

我收到一个错误,无法解析符号mcontext,但它返回当前正在运行的所有应用程序。如何获取用户打开的或当前正在使用的应用程序。get0正在返回当前应用程序runninggetRunningAppProcesses返回无序列表,因此无法对其第一个元素进行任何假设,文档说:返回RunningAppProcessInfo记录的列表,如果没有正在运行的进程,则返回空列表。未指定此列表顺序。getRunningTasks1.get0将执行您需要的操作。这有帮助吗