0

アクティビティがonPause状態になるたびにログイン画面が表示されるアプリケーションがあります。一般的に、画面の向きが変わると、アクティビティはonPause状態になるので、デバイスを回転させたときにログイン画面が表示されないようにしました。以下のコードを参照してください。

protected void onPause() {
    super.onPause();

    WindowManager mWindowManager =  (WindowManager) getSystemService(WINDOW_SERVICE);
    mDisplay = mWindowManager.getDefaultDisplay();

    mOrientation = mDisplay.getRotation();

    if(mOrientation == 1 || mOrientation == 2 || mOrientation == 3 || mOrientation == 0)
    {
        inApp = true;
    }
    if (!inApp) {

        SavedState.setState(this, "HomeActivity");

        Intent intent = new Intent(HomeActivity.this, LoginActivity.class);
        startActivity(intent);
    }
}

mDisplay.getRotation()しかし、問題は、ホームボタンを押してアプリケーションに戻ったときに、ログイン画面が表示されないことです。代わりに、画面の現在の向きとif状態が常にtrueになるため、ログイン画面が直接アクティビティに戻ります。

わかりやすくするために、ユーザーがホームボタンを押すか、他のアプリケーションに切り替えたときにログイン画面が表示される必要がありますが、画面が回転したときは表示されません。

どんな種類の提案や例でも大歓迎です。ありがとう !

4

2 に答える 2

0

これはうまくいくはずです-少し肉付けする必要があるかもしれません...

class MyActivity... {
    private boolean loggedIn = false;

@Override
protected void onSaveInstanceState( Bundle data ) {
    super.onSaveInstanceState( data );
    data.putBoolean( "loggedIn", loggedIn );
}

@Override
protected void onUserLeaveHint() {
    isLoggedIn = false; // user pressed home
}

@Override 
protected void onCreate( Bundle data ) {
    isLoggedIn = data.getBoolean( "loggedIn", false );
    ....
}

@Override
protected void onResume() {
    if( !isLoggedIn ) {
        /// Log in...
    }
}

このパターンは、推奨される方法を使用してアクティビティの状態を使用/復元し、おまけとして、ホーム ボタンが押された場合 (またはユーザー アクティビティが別のアプリに移動することを決定した場合) にユーザーをログアウトします。ここでは、通話によってユーザーをログアウトしないように注意してください。これは、ほとんどの場合、望ましい動作です。

android:configChanges他の誰かが推奨したゴミを必ず取り除いてください。

于 2013-02-13T22:00:31.843 に答える
-2

デフォルトでは、Androidは実際にローテーション時にアクティビティを破棄して再開します。これにより、、、、、、がonPause()呼び出されます。このような問題を回避する最善の方法は、Androidにそうしないように指示することです。マニフェストでアクティビティに追加します。破壊を防ぎ、代わりに回転時に関数を呼び出します。ほとんどの場合、画面は正しく再描画されます。onStop()onDestroy()onCreate()onStart()onResume()android:configChange="orientation"

于 2013-02-13T21:39:03.563 に答える