12

1 回のクリックでアプリケーション全体を強制終了する方法..finish() が機能しない?? 以前のアクティビティにリダイレクトされます...ガイドしてください。

          public void onClick(View arg0) {
            // TODO Auto-generated method stub
            WallpaperManager wp = WallpaperManager
                    .getInstance(getApplicationContext());

            try {
                Display d = ((WindowManager) getSystemService(Context.WINDOW_SERVICE))
                        .getDefaultDisplay();
                int width = d.getWidth();
                int height = d.getHeight();
                wp.setBitmap(b1);
            } catch (IOException e) {
                Log.e("error", "Cannot set image as wallpaper", e);
            }

                        finish();

        }
4

5 に答える 5

30

System.exit()スタックに複数のアクティビティがある場合、アプリを強制終了しません

android.os.Process.killProcess(android.os.Process.myPid());このように使用します。

サンプル用

public void onBackPressed() {
    android.os.Process.killProcess(android.os.Process.myPid());
    super.onBackPressed();
}

詳細については、「アプリケーションを終了することは嫌われていますか?」を参照してください。プログラムで Android アプリケーションを強制停止する方法は?

これがお役に立てば幸いです。

于 2013-05-31T07:13:32.607 に答える
5

この関数を使用して、アプリケーションを閉じることができます

Process.killProcess( Process.myPid() ); 
于 2013-05-31T07:13:28.013 に答える
1
  • アクティビティの開始に使用startActivityForResultします。
  • の場合は、別の活動を開始する活動を記入してfinish()ください。onActivityResultresult == RESULT_CANCELLED
  • 最後finish()に出口で使用。
于 2013-05-31T07:12:22.890 に答える
1

私はあなたがこれを望んでいると思います

    Intent intent = new Intent(Intent.ACTION_MAIN);
    intent.addCategory(Intent.CATEGORY_HOME);
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    startActivity(intent);
于 2013-05-31T07:12:25.707 に答える
1

終了 ()

API レベル 1 で追加されました。アクティビティが完了し、閉じる必要があるときにこれを呼び出します。アクティビティの結果は、onActivityResult() を介してあなたを起動した人に伝播されます。

System.exit() を使用して、クリックでアプリケーションを強制終了し、アクティビティを直接閉じる必要があります。

なぜ finish() が機能しないのですか?

アクティビティ A がアクティビティ B を呼び出し、アクティビティ B で finish() を呼び出すと、アクティビティを終了するが、アクティビティ A が彼に呼び出しを与え、それが前のアクティビティであるため、アクティビティ A の画面に戻る例を考えてみましょう。

何ができる?

  1. System.exit()を呼び出すことができます-アプリケーションがどこから呼び出されても、アプリケーションを直接強制終了します。
  2. Process.killProcess (プロセス ID) を使用します。

  3. finish() を使用して現在のアクティビティを強制終了し、次に呼び出すことでホーム アクティビティを開始します。

    Intent intent = new Intent(Intent.ACTION_MAIN);
    intent.addCategory(Intent.CATEGORY_HOME);
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    startActivity(intent);
    
于 2013-05-31T07:22:50.537 に答える