2

ユーザーが他のアプリケーションに切り替えたり、ホームボタンを押したりするたびにログインクラスが呼び出されるアプリケーションを開発しようとしています。

たとえば、Activity1とActivity2の2つのアクティビティがあります。

  • Activity2はActivity1から呼び出されるため、Activity1はonPause状態になります。
  • ユーザーが他のアプリケーションに切り替えると、そのアクティビティからLoginクラスが呼び出され、認証が成功すると同じ時点で再開されます。

そして現在、私はすべてのアクティビティのonPauseメソッドでLoginクラスのインテントを開始しています。そのため、Activity1からActivity2に切り替えると、Activity1のonPauseメソッドが実行され、Activity2に切り替えることができません。

簡単に言うと、Loginクラスは、ユーザーが他のアプリケーションに切り替えたとき、またはホームボタンを押したときにのみ呼び出す必要がありますが、アプリケーションがフォアグラウンドにあるときは呼び出さないでください。

あなたが私の問題を理解してくれることを願っています。ありがとう !

4

4 に答える 4

0

ブールフラグを使用します。

boolean movingInApp = false;
....
movingInApp = true;
Intent intent...
.....
public void onPause() {
    if(!movingInApp) {
        //Show login
    }
}

public void onResume() {
    movingInApp = false;

}

インテントなどを起動する前にの値movingInAppをtrueに設定することで、アプリがログイン画面を表示しないようにすることができます。メソッドの後半で、これを再びfalseに設定することを忘れないでくださいonResume()。システムがアプリをバックグラウンドに移行させる場合、これはfalseになり、ログイン画面が表示されます。

これを行うさらに良い方法は、このロジックをいくつかのBaseActivityに実装し、他のすべてのアクティビティにそれを継承させることです。

于 2013-02-06T16:59:55.000 に答える
0

アプリケーションのオーバーライドApplicationset/resetログイン設定onCreate()/onTerminate()

お役に立てれば。

于 2013-02-06T16:59:40.570 に答える
0

このようなものを自分で実装する必要があります。Androidのアプリケーションの概念は、他のプラットフォームとは異なります。ユーザーはアプリケーションと対話するのではなく、個々のアプリケーションコンポーネント(アクティビティ)と対話します。これをサブクラスに実装することもできますApplicationが、システムは、ユーザーがアクティビティを離れた後でも(たとえば、HOMEを押すことによって)アプリケーションを維持できます。

このような問題に対して私が行った解決策の1つは、Activityライフサイクルコールバックをミラーリングするライフサイクルコールバックを使用してシングルトンクラス(おそらくLoginManagerと呼ばれる)を作成することです。次に、シングルトンを取得し、各ライフサイクルコールバックがシングルトンの対応するメソッドを呼び出すBaseActivityクラスを作成します。このようにして、ライフサイクルを通じてアクティビティを追跡し、それに応じて対応することができます。

アクティビティが開始、再開、一時停止、または停止するのを監視しました。アクティビティを開くと、現在のアクティビティが一時停止し、次のアクティビティが作成、開始、再開(または再開して再開)され、最初のアクティビティが停止します。

于 2013-02-06T17:07:07.327 に答える
0

onResume()現在、これをどのように実装しているかについては100%明確ではありませんが、説明に基づくと、ではなくこのログインクラスを実装したいようですonPause()。アクティビティがフォアグラウンドに戻るたびにユーザーを認証させようとしている場合は、次のようにします。

(1)アプリの最後の状態をSharedPreferencesonPause()および/またはに保存しますonStop()

(2)onResume()またはonRestart()、インテントを使用してユーザーをログインアクティビティに戻す(または、これを行う方法に応じて自動的に認証する)

(3)認証が成功した場合は、SharedPreferencesに保存されている最後の状態にアクセスし、ユーザーが以前のアクティビティに戻ります。

于 2013-02-06T17:23:56.467 に答える