4

アプリがバックグラウンドから来るたびに、ユーザーにPINの入力を求める必要があるアプリがあります。

@hackbodと@commonswareからのstackoverflowからいくつかの回答を調べましたが、@ commonswareからタイムアウトアプローチを実装しましたが、正常に機能しましたが、ユーザーはそれに満足していません。彼らは、アプリがバックグラウンドから来るたびにPINの入力を求めたいと考えています。

現在、すべてのアクティビティでonStartのカウンターをインクリメントし、onStopのカウントをデクリメントすることで、@hackbodのソリューションを実装しています。 アプリケーションがバックグラウンドに入ったかどうかを検出するAndroid

しかし、問題は、ユーザーが現在のアクティビティの方向を変更すると、カウンターが0に戻り、私のアプリはユーザーがバックグラウンドから来ていると見なす場合です。私のonStart()はカウンターをインクリメントし、onStopはカウンターをデクリメントします。向きが異なるとレイアウトも異なるので、Androidに向きの変更を処理してもらいたいです。

今のところ、GET_TASKSアプローチは使用しません。すべての提案を歓迎します。

4

2 に答える 2

2

Activity Lifecycleを見てください。このようなことを達成するつもりなら、アクティビティがインテントで開始され、現在のピンで Extra 値が設定されていない限り、各アクティビティにピンを要求します。

起動アクティビティ:

Intent intent = new Intent(getBaseContext(), NewActivity.class);
intent.putExtra("PIN", storedPIN);
startActivity(intent);

活動開始:

@Override
public void onResume() {
    super.onResume();

    Bundle extras = getIntent().getExtras();
    if (extras != null) {
        String value = extras.getString("PIN");
    }

    //Check pin to make sure it matches stored pin
    //Else prompt for pin
}

この方法では、アプリの初回起動時にピンの入力を求めるプロンプトが表示されます。メイン アクティビティが他のアクティビティを開始するときに PIN を入力すると、保存されている PIN が渡され、再度 PIN の入力を求められることはありません。

また、別のアクティビティを開始するときに、現在のアクティビティからエクストラをクリアする必要がある場合もあります。

于 2012-10-17T18:43:40.697 に答える
0

ある瞬間、私は非常によく似た行動を探していました。これが私が尋ねた賞金に関する質問です:

Androidでのスタートアップアクティビティから常に開始するにはどうすればよいですか?

さまざまなアプローチがありました。ただし、それぞれにいくつかの欠点がありました。

于 2012-10-17T18:50:32.580 に答える