我正在编写一个应用程序,需要知道任何给定的应用程序对用户可见的时间。
当打开应用程序并且用户不再可见时,我的服务是否可以接收任何系统范围的事件(onStop())?或者我是否必须定期轮询ActivityManager?
应用程序Tasker(http://tasker.dinglisch.net)似乎能够检测任何给定的应用程序何时可见/不可见。他们只是简单地轮询ActivityManager,还是有其他方法可以解决这个问题?
价:
Time that an application is running
How to know for how much long the application is running in android?
答案 0 :(得分:-1)
您可以通过以下方式检测您的应用是否可见:
在您的所有活动中,设置:
@Override
protected void onResume() {
super.onResume();
VisibilityManager.setIsVisible(true);
}
@Override
protected void onPause() {
VisibilityManager.setIsVisible(false);
super.onPause();
}
(这可能会导致您为实现此行为的所有活动定义超类)
然后创建一个VisibilityManager(这个非常基础,你可能需要更高级的东西):
public class VisibilityManager {
private boolean mIsVisible = false;
public void setIsVisible(boolean visible) {
mIsVisible = visible;
}
public boolean getIsVisible() {
return mIsVisible;
}
}
然后,在您的计时器线程中,当倒计时到达零时,您可以终止该应用程序:
if (VisibilityManager.getIsVisible()) {
finish();
}
else {
showNotification();
}