应用来自后台

时间:2017-08-01 07:18:50

标签: java android oop inheritance

我正在尝试实现一种功能,即每次打开应用程序或来自后台时都要求用户输入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概念吗?

感谢任何帮助。感谢。

2 个答案:

答案 0 :(得分:1)

添加android:launchMode =" singleInstance"进入AndroidManifest.xml文件

答案 1 :(得分:0)

一个非常愚蠢的错误。我在onStart()内注册了监听器,但忘记在onStop()

中取消注册