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

时间:2012-06-15 16:19:34

标签: android time visible

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

当打开应用程序并且用户不再可见时,我的服务是否可以接收任何系统范围的事件(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?

1 个答案:

答案 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();
}