gpt4 book ai didi

安卓:相当于IOS的 "applicationDidEnterBackground()"

转载 作者:搜寻专家 更新时间:2023-11-01 08:39:29 26 4
gpt4 key购买 nike

我正在开发一个应用程序,并且在 IOS 版本中,每当发生外部事件时,例如主页按钮或应用程序中的来电都会显示其密码输入屏幕,因为它显示敏感数据。

我正在尝试在 android 中复制它,但我遇到了麻烦,因为可以调用生命周期方法,但这并不一定意味着它是外部事件,例如另一个应用程序获得焦点。

是否有一种标准方法来检测 onPause() 是否因为外部事件触发而被调用?

编辑:我有一个部分可行的解决方案:

@Override
public void onTrimMemory(int level) {
super.onTrimMemory(level);

Intent login = new Intent(this, AppEntryPoint.class);
login.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(login);
}

问题在于,如果按下主页按钮,则会调用此方法,但随着应用程序失去焦点,它会通过触发登录 Intent 重新获得焦点。

这同样适用于打开应用程序按钮,按下它我的应用程序将转到登录屏幕,这会遮挡页面 View ,但随后它会立即再次获得焦点。

我想要触发 intent,但它不会让应用重新聚焦。

最佳答案

您可以使用 TRIM_MEMORY_UI_HIDDEN为此回调。

Level for onTrimMemory(int): the process had been showing a user interface, and is no longer doing so. Large allocations with the UI should be released at this point to allow memory to be better managed.

例子:

创建一个从 Application 扩展的类,在 Manifest 中注册它并覆盖它的 onTrimMemory

list :

 <application
android:name=".AppContext" // the declared class name
android:allowBackup="true"
android:icon="@mipmap/app_icon"
android:label="@string/app_name"
android:theme="@style/AppTheme"
tools:replace="icon"
>

应用类:

public class AppContext extends Application{

....

@Override
public void onTrimMemory(int level) {
super.onTrimMemory(level);

if(level >= TRIM_MEMORY_UI_HIDDEN)
{
//do your job here
}
}

关于安卓:相当于IOS的 "applicationDidEnterBackground()",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34132518/

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