アプリを開いたり、バックグラウンドから来るたびに、ユーザーにPINを要求する機能を実装しようとしています。検索後、私はa solutionを見つけました。アプリがバックグラウンドから来たときにPINを問い合わせてください
私はベースがActivity
で、残りは継承されています。それはParentActivity
と呼ばれています。 ParentActivity
にForeground.Listener
を実装し、実行時にonBecameForeground
を上書きし、PINActivity
を開きます。
public abstract class ParentActivity extends AppCompatActivity implements Foreground.Listener {
...
@Override
public void onBecameForeground() {
openSecurityActivity();
}
...
}
以下のようなもの。そしてsuper
@Override
public void onBecameForeground() {
super.onBecameForeground();
}
を呼び出すために、すべての子クラスでこのメソッドをオーバーライドしPROBLEM
が今の問題はアプリケーションがフォアグラウンドに来る時はいつでも、このメソッドが実行されていますたとえ子Activity
が作成されていなくても、このメソッドをオーバーライドしている子クラスが存在するため、時間の無駄です。私は
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);
}
}
}
、以下のようにopenSecurityActivity()
の内側にチェックを入れてみましたが、それはまだ二回、それを開いています。私は問題を理解することはできません。ここで基本的なOOPの概念が欠けていますか?
何か助けていただければ幸いです。ありがとう。
アプリケーションクラスに "Foreground"クラスを実装しました –