0

私はAndroidアプリ、特にログインページを構築しています。これにより、ユーザーが何らかの方法でログインページを終了した場合、つまりSWITCH、HOME、またはBACKボタンを使用してアプリを完全にシャットダウンしたいと思います。

アプリを完全にシャットダウンしてはならないのは、ユーザーが正常にログインしたとき、つまり、カスタム作成されたログイン ボタンまたは Enter ボタンが押されたときだけです。

アプリを正常にシャットダウンできましたが、ユーザーが正常にログインした場合でもシャットダウンします。これを行うためのものではありません。

以下は、完全にシャットダウンするためのコードです。onDestroy()、onBackPressed()、finish()、および onStop() メソッドを引き継ぎました。

    // Deal with back button
public void onBackPressed() {
    System.runFinalizersOnExit(true);

    System.exit(0);     
}

// Deal with exiting of app
public void finish() {

    System.runFinalizersOnExit(true);

    System.exit(0);

}

// Deal with exiting of app
public void onDestroy() {
    System.runFinalizersOnExit(true); 

    System.exit(0);
}

// Deal with exiting of app
public void onStop() {
    System.runFinalizersOnExit(true); 

    System.exit(0);
}

誰かが私の問題に関して何か考えを持っていますか

あなたの支援は非常に高く評価されています

4

3 に答える 3

2

メソッドの説明については、こちらを参照してください。ユーザーが正常にログインしたときにonStop()別のものを開くと、上記が非表示になり、アプリを終了する場所が呼び出されます。したがって、オーバーライドしないでください。ActivityActivityonStop()onStop()

于 2013-03-13T15:33:13.673 に答える
1

このonStop()メソッドは、アプリがバックグラウンドに移行したとき、画面がオフになったとき、別のアクティビティに切り替えたときなど、アクティビティが非表示になるたびに呼び出されます。

とにかく、あなたがやろうとしていることは強くお勧めできません。このフォーラム スレッドを参照してください(Dianne Hackborn は Android フレームワークの主任開発者の 1 人です)。

System.exit()などを使用してアプリを強制終了するProcess.killProcess()と、Android アプリケーションのライフサイクルと競合するリスクが高く、保存された状態が破損する可能性があり、ユーザーにとって予期しない不快な動作につながる可能性があります。

より良い方法は、ログイン アクティビティを起動するときにフラグを使用することFLAG_ACTIVITY_SINGLE_TOPです。FLAG_ACTIVITY_CLEAR_TOPこれにより、アプリケーションから以前のアクティビティが削除されます。これは、ユーザーの観点から新しいアプリケーションを開始することと同じです。

于 2013-03-13T15:37:05.383 に答える
0

クラスメンバーのブール値を作成し、カスタム作成されたログインボタンまたは入力ボタンが押されたときにtruemLoggedInに設定するだけです。 それで

@Override
protected void onPause()
{
    super.onPause();
    if (!mLoggedIn) 
    {
        finish();
    }
}
于 2013-03-13T17:44:18.150 に答える