gpt4 book ai didi

java - 如何跟踪应用程序启动

转载 作者:行者123 更新时间:2023-12-01 18:09:32 26 4
gpt4 key购买 nike

如何跟踪用户启动应用程序,我发现使用accessibilityService可以做到这一点,但我不喜欢这种方法。我在游戏市场中看到应用程序使用 pin 码阻止其他应用程序,并且它们以某种方式跟踪应用程序的启动,我只授予它们查看应用程序统计信息的权限

最佳答案

试试这个

第二个选项是创建一个类,使用标志扩展 Application,例如 isAppRunning,根据您的应用程序是否位于前台,该标志为 true 或 false:

   public class MyAppContext extends Application {

public boolean isAppRunning = true;

public void setIsAppRunning(boolean v){
isAppRunning = v;
}

public boolean isAppRunning(){
return isAppRunning;
}

}

然后,您必须在 AndroidManifest.xml 中添加此类,以便在应用程序启动时使用它。只需在应用程序标签下添加 android:name=".MyAppContext"即可:

<application
android:name=".MyAppContext"

现在,在您拥有的每个 Activity 中,您应该重写 onResume() 和 onPause() 并将标志设置为相应的值:

class BaseActivity extends Activity {
@Override
protected void onResume() {
super.onResume();
((MyAppContext)getApplication()).setIsAppRunning(true);
}

@Override
protected void onPause() {
((MyAppContext)getApplication()).setIsAppRunning(false);
super.onPause();
}
}

这样,每次您启动一个 Activity 时,MyAppContext 中的 isAppRunning 值都将为 true,当您退出该 Activity 时,该值将为 false,但如果另一个 Activity 打开(例如,如果您按下后退按钮,那么您将返回到前一个 Activity )该值将立即再次变为 true。

当您最终完成所有 Activity 时,不会调用任何 onResume() 方法,并且将调用所有 onPause() 方法,因此 isAppRunning 将为 false,并且您知道您的 Activity 不再位于前台。

所以恢复,如果 isAppRunning 为 true,您的应用程序位于前台(启动 session 跟踪),否则它就会消失(停止 session 跟踪)。您可以在 MyAppContext 类中创建一个 Timer 来定期检查 isAppRunning 的值,因此它将是:

public class MyAppContext extends Application {

public boolean isAppRunning = true;
public final int timerRate = 500; // Execute timer task every 500mS

public void setIsAppRunning(boolean v){
isAppRunning = v;
}

public boolean isAppRunning(){
return isAppRunning;
}

@Override
public void onCreate() {
super.onCreate();
Timer mTimer = new Timer();

mTimer.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
if(isAppRunning) startSesionTracking();
else stopSesionTracking();
}
}, 0, REFRESH_TIME);
}

private void startSesionTracking () { ... };
private void stopSesionTracking () { ... };

}

关于java - 如何跟踪应用程序启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60492498/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com