2

私はAndroidアプリケーションを開発しました.メニューオプションにExitボタンがあります.Exitボタンを押すと、アプリケーションを終了してホーム画面に移動したいです。そのために、次の方法を使用しました

1.System.exit(0)

2.finish()

3.android.os.Process.killProcess(android.os.Process.myPid())

4.System.runFinalizersOnExit(true);

これらのすべてのメソッドは、アプリケーションの最初のページをホーム画面ではなく直接表示します。私を助けてください

4

7 に答える 7

6

戻るボタンとホームボタンがすでにこの機能を提供しているため、最初にAndroidアプリケーションを閉じることは眉をひそめます。しかし、必要に応じてこれを行うことができます

ユーザーが開いているすべてのアクティビティを終了したい場合は、アプリの起動時に実行される最初のアクティビティを読み込むボタンを押す必要があります。

    Intent intent = new Intent(getApplicationContext(), FirstActivity.class);
    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    intent.putExtra("EXIT", true);
    startActivity(intent);

上記のコードは、最初のアクティビティを除くすべてのアクティビティをクリアします。次に、このコードを最初のアクティビティの 内に配置して、「 Exit」メッセージが渡されたonCreate()ときに自己破壊する必要があることを通知します。

    if (getIntent().getBooleanExtra("EXIT", false)) {
        finish();
    }
于 2012-10-10T07:07:40.737 に答える
3

1) 「終了」ボタンは悪です。Android ではそれらは必要ありません。ユーザーが [戻る] または [ホーム] を押します。Android にナビゲーションを任せます。

2) 非常に正当な理由があり、自分が何をしているのかを理解している場合を除き、System.exit() を使用しないでください。Android に独自のアプリケーション管理を任せます。

3)finish()を使用するだけです。これは、アプリを閉じるための文書化された推奨される方法です。

于 2012-10-10T07:07:08.537 に答える
3

ホーム画面に戻るには、次のコードを使用できます。

// This you have to insert inside the exit button click event
    Intent intent = new Intent(Intent.ACTION_MAIN);
                    intent.addCategory(Intent.CATEGORY_HOME);
                    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                    startActivity(intent);
                    onQuitPressed(); 

//This is the onQuitPressed method

//to remove application from task manager
    public void onQuitPressed() {

        int pid = android.os.Process.myPid();
        android.os.Process.killProcess(pid);
    }

お役に立てれば!

于 2012-10-10T07:15:12.593 に答える
1

このソリューションにはハックがあります。

メソッドを使用して各アクティビティを開始し、メソッドstartActivityForResult(intent, 1)をオーバーライドしてonActivityResult()、onActivityResult()に以下のコードを配置します

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    if(resultCode == Activity.RESULT_CANCELED){
        setResult(Activity.RESULT_CANCELED);
        onBackPressed();
    }
}

各アクティビティに結果を設定しますonCreate()

setResult(Activity.RESULT_OK);

今、あなたがしなければならないのは、あなたがアプリケーションを終了したいアクティビティです。

setResult(Activity.RESULT_CANCELED);

onBackpressメソッドを呼び出します

onBackPressed();

これがあなたを助け、あなたの問題を解決することを願っています。

于 2012-10-10T07:51:05.847 に答える
1

System.exit(0)動作するはずですが、なぜ動作しないのかわかりません。別の解決策としてHome Intent

ホーム画面にリダイレクトされますが、アプリはバックグラウンドに保持されるため、次回アプリを起動すると、最後に離れたところから開始されます。

    Intent  intent = new Intent(Intent.ACTION_MAIN);
            intent.addCategory(Intent.CATEGORY_HOME);
            intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            startActivity(intent);
            finish();
于 2012-10-10T07:21:36.207 に答える
0

いずれの場合も、2 番目のオプションを使用して、現在のアクティビティfinish()を強制終了し、別のアクティビティを開始します。StartActivity(new intent(this, whichActicityUwant.class)); then call finish();

ホーム画面に移動するアプリを強制終了および強制終了するために使用される3 番目のオプション。

于 2012-10-10T07:13:10.143 に答える