确定Android应用程序(不是我的)可见的时间

确定Android应用程序(不是我的)可见的时间,android,time,visible,Android,Time,Visible,我正在编写一个应用程序,它需要知道任何给定的应用程序对用户可见的时间有多长 当应用程序打开且用户不再可见时(onStop()),我的服务是否会收到任何系统范围的事件?或者我必须定期轮询ActivityManager吗 applications Tasker()似乎能够检测任何给定应用程序何时可见/不可见。他们只是简单地对ActivityManager进行民意调查,还是有其他方法 参考: 您可以通过以下方式检测应用程序是否可见: 在所有活动中,设置: @Override protected v

我正在编写一个应用程序,它需要知道任何给定的应用程序对用户可见的时间有多长

当应用程序打开且用户不再可见时(onStop()),我的服务是否会收到任何系统范围的事件?或者我必须定期轮询ActivityManager吗

applications Tasker()似乎能够检测任何给定应用程序何时可见/不可见。他们只是简单地对ActivityManager进行民意调查,还是有其他方法

参考:


您可以通过以下方式检测应用程序是否可见:

在所有活动中,设置:

@Override
protected void onResume() {
super.onResume();

VisibilityManager.setIsVisible(true);
}

@Override
protected void onPause() {
VisibilityManager.setIsVisible(false);

super.onPause();
}
(这可能会导致您为实现此行为的所有活动定义一个超类)

然后创建VisibilityManager(这是一个非常基本的工具,您可能需要更高级的工具):

然后,在计时器线程中,当倒计时达到零时,可以终止应用程序:

if (VisibilityManager.getIsVisible()) {
finish();
}
else {
showNotification();
}

您可以通过以下方式检测应用程序是否可见:

在所有活动中,设置:

@Override
protected void onResume() {
super.onResume();

VisibilityManager.setIsVisible(true);
}

@Override
protected void onPause() {
VisibilityManager.setIsVisible(false);

super.onPause();
}
(这可能会导致您为实现此行为的所有活动定义一个超类)

然后创建VisibilityManager(这是一个非常基本的工具,您可能需要更高级的工具):

然后,在计时器线程中,当倒计时达到零时,可以终止应用程序:

if (VisibilityManager.getIsVisible()) {
finish();
}
else {
showNotification();
}

不幸的是,这只有在我监视自己的应用程序时才起作用。但是,我需要能够确定其他非我的应用程序的运行时间。我目前正在查看SpareParts的源代码,以了解它们是如何实现的。不幸的是,这只有在我监视自己的应用程序时才起作用。但是,我需要能够确定其他非我的应用程序的运行时间。我目前正在查看SpareParts的源代码,以了解它们是如何做到这一点的。