【发布时间】:2015-12-07 11:29:33
【问题描述】:
我正在开发一个应用程序,并且在 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 重新获得焦点。
这同样适用于打开应用程序按钮,按下它我的应用程序会进入登录屏幕,这会遮挡页面视图,但随后它会立即再次获得焦点。
我希望触发意图,但不要让应用重新聚焦。
【问题讨论】:
-
您必须根据应用程序的逻辑过滤此意图调用。 if(level >= TRIM_MEMORY_UI_HIDDEN) 条件必须以某种方式扩展。
-
我正在添加额外的条件,我刚刚删除了它们以便于查看问题,问题不在于这种方法。在 startActivity() 调用中,应用程序会在一瞬间失去焦点,但随后立即被拉回前台。我需要阻止这种情况发生,但我不确定如何。
-
我需要阻止这种情况发生,但我不确定如何 > 也显示应用程序的其他部分
标签: android android-lifecycle onpause