我正在尝试实现一种功能,即每次打开应用程序或来自后台时都要求用户输入PIN。搜索完毕后,我找到了a solution。
我有基类Activity
类,其中继承了休止符。它被称为ParentActivity
。我在Foreground.Listener
中实施ParentActivity
并覆盖onBecameForeground
,并在运行时打开PINActivity
。像下面的东西
public abstract class ParentActivity extends AppCompatActivity implements Foreground.Listener {
...
@Override
public void onBecameForeground() {
openSecurityActivity();
}
...
}
然后在所有子类中重写此方法以调用super
@Override
public void onBecameForeground() {
super.onBecameForeground();
}
问题
现在的问题是,当App进入前台时,这个方法正在运行,因为有一些子类覆盖了这个方法,即使没有创建子Activity
。我试着在openSecurityActivity()
内部检查,如下所示,
synchronized protected void openSecurityActivity() {
if(securityPinRequired) {
if(!isSecurityActivityOpened) {
isSecurityActivityOpened = true;
Intent intent = new Intent(this, FingerprintAndSecurityPINActivity.class);
intent.putExtra(Constants.ASK_SECURITY_PIN, true);
intent.putExtra("isForBackgroundVerification", true);
startActivity(intent);
}
}
}
但它仍然打开两次。我无法弄清楚这个问题。我在这里错过了任何基本的OOP概念吗?
感谢任何帮助。感谢。
答案 0 :(得分:1)
添加android:launchMode =" singleInstance"进入AndroidManifest.xml文件
答案 1 :(得分:0)
一个非常愚蠢的错误。我在onStart()
内注册了监听器,但忘记在onStop()