gpt4 book ai didi

Android - 如何知道应用程序在后台后何时恢复

转载 作者:行者123 更新时间:2023-11-29 15:07:14 27 4
gpt4 key购买 nike

我正在尝试确定在用户关闭我的应用程序后何时以任何方式恢复,按主页按钮、后退按钮或切换到另一个应用程序。

我需要做的是在应用程序进入后台时设置一个 bool 值,这样,当它恢复时,我知道它之前是在后台,我可以相应地采取行动。

我尝试在 Activity 中使用 onResume 和 onPause 方法来了解应用程序何时进入后台,然后恢复,但由于一次只能有一个 Activity ,所以我没有成功。当一个 Activity 暂停时,这并不意味着应用程序进入后台,因为另一个 Activity 可能已经启动,但该 Activity 的 onResume 事件只会在前一个 Activity 暂停后触发。

我也尝试在前台列出所有应用程序,但没有成功,如果我将我的应用程序置于后台恢复另一个应用程序,我的应用程序总是会出现在前台。

我读到自 Android 4 以来有一种新方法可以知道应用程序何时处于前台,但我也需要我的应用程序与 Android 3.0 设备兼容。

这是我尝试放入每个 Activity 中的代码(MyApp 是我的应用程序名称):

@Override
protected void onResume() {
super.onResume();
MyApp.isPaused = false;
}

@Override
protected void onPause() {
super.onPause();
MyApp.isPaused = true;
}

这也是我在前台列出所有应用程序的尝试:

ActivityManager activityManager = (ActivityManager)((Activity) currentContext).getSystemService( ACTIVITY_SERVICE );
List<RunningAppProcessInfo> appProcesses = activityManager.getRunningAppProcesses();
for(RunningAppProcessInfo appProcess : appProcesses){
if(appProcess.importance == RunningAppProcessInfo.IMPORTANCE_FOREGROUND){
if(appProcess.processName.equals("com.xxx.myapp")) {
Log.i("MyApp", "it's in foreground");
}
Log.i("MyApp", appProcess.processName);
}
}

最佳答案

class提供一个单例来确定“后台 Activity ”状态。它使用带有阈值(即 0.3 秒)的计时器来确定 Activity 是否进入后台。

需要指出的是,如果用户在阈值(即 0.3 秒)内恢复 Activity ,则此测试将失败。

如果您有更好的解决方案,请与我们分享:)

引用:https://gist.github.com/steveliles/11116937

关于Android - 如何知道应用程序在后台后何时恢复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35791472/

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