programing

Android 앱을 프로그래밍 방식으로 종료하려면 어떻게 해야 합니까?

prostudy 2022. 10. 13. 23:31
반응형

Android 앱을 프로그래밍 방식으로 종료하려면 어떻게 해야 합니까?

이 질문은 몇 번 읽었기 때문에 몇 번인가 질문을 받았을 것입니다.제 고객은 사용자가 클릭해서 종료할 수 있는 버튼을 앱에 넣기를 원합니다.이 글을 읽고 전화를 걸었습니다.finish()아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 네.그러나 마침은 현재 진행 중인 활동을 종료하는 것 뿐이죠?저는 활동이 많기 때문에 이 경우 모든 활동의 인스턴스를 통과하여 완료하거나 모든 활동을 싱글톤 패턴으로 만들어야 합니다.

i i i도 i i i i 。Activity.moveTaskToBack(true)홈 화면으로 이동할 수 있습니다.이것은 프로세스를 종료하는 것이 아니라 백그라운드입니다.래서서 이과 ?? ???

앱을 완전히 닫으려면 어떤 방법을 사용해야 합니까?위에서 설명한 방법 또는 위의 다른 방법/기타 사용방법 중 어느 것이 있습니까?

API 16에서 릴리스된 finishAffinity 메서드는 진행 중인 모든 작업을 닫고 앱을 닫습니다.

this.finishAffinity();

이 액티비티와 그 바로 아래의 모든 액티비티를 현재 태스크에서 동일한 선호도를 가진 액티비티를 완료합니다.이것은 일반적으로 응용 프로그램을 다른 작업(예를 들어 인식되는 콘텐츠유형의 ACTION_VIEW에서)으로 기동할 수 있고 사용자가 업 네비게이션으로 현재 작업을 종료하고 자신의 작업으로 전환했을 때 사용됩니다.이 경우 사용자가 두 번째 응용 프로그램의 다른 액티비티로 이동한 경우 작업 전환의 일부로 이러한 액티비티를 모두 원래 작업에서 제거해야 합니다.

이 종료에서는 이전 액티비티로 결과를 전달할 수 없습니다.이렇게 할 경우 예외가 발생합니다.


API 21 이후 다음 기능을 사용할 수 있습니다.

finishAndRemoveTask();

이 작업의 모든 작업을 완료하고 최근 작업 목록에서 제거합니다.

다른 방법:

getActivity().finish();
System.exit(0);


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


Process.sendSignal(Process.myPid(), Process.SIGNAL_KILL);


Intent i = new Intent(context, LoginActivity.class);
i.putExtra(EXTRA_EXIT, true);
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
context.startActivity(i);

출처: Android 어플리케이션을 프로그래밍 방식으로 종료하는 방법


을 빌어요행운을 빕니다.

실제로 모든 사용자가 클릭 이벤트를 통해 애플리케이션을 종료하고 싶어 합니다.어디서든 액티비티가 있을 수 있습니다.

온클릭 이벤트에 다음 코드 추가:

Intent homeIntent = new Intent(Intent.ACTION_MAIN);
    homeIntent.addCategory( Intent.CATEGORY_HOME );
    homeIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);  
    startActivity(homeIntent); 

모든 액티비티를 종료하려면 System.exit();를 호출할 수 있습니다.

    submit=(Button)findViewById(R.id.submit);

            submit.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View arg0) {
android.os.Process.killProcess(android.os.Process.myPid());
                    System.exit(1);

                }
            });

응용 프로그램을 종료하려면 버튼을 누른 이벤트 내에서 다음 코드를 사용하십시오.

public void onBackPressed() {
  moveTaskToBack(true);
  android.os.Process.killProcess(android.os.Process.myPid());
  System.exit(1);
}
 @Override
    public void onBackPressed() {
        AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);
        alertDialogBuilder.setTitle("Exit Application?");
        alertDialogBuilder
                .setMessage("Click yes to exit!")
                .setCancelable(false)
                .setPositiveButton("Yes",
                        new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog, int id) {
                                moveTaskToBack(true);
                                android.os.Process.killProcess(android.os.Process.myPid());
                                System.exit(1);
                            }
                        })

                .setNegativeButton("No", new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int id) {

                        dialog.cancel();
                    }
                });

        AlertDialog alertDialog = alertDialogBuilder.create();
        alertDialog.show();
    }

사용하다System.exit(0);

따라서 다음 두 가지 상황이 발생할 수 있습니다.

  1. 액티비티를 종료할 수 있습니다.
  2. 또는 응용 프로그램을 종료합니다.

다음 코드를 사용하여 활동을 종료할 수 있습니다.

var intent = new Intent(Intent.ActionMain);
intent.AddCategory(Intent.CategoryHome);
intent.SetFlags(ActivityFlags.NewTask);
startActivity(intent);
finish();

단, 같은 어플리케이션의 기본 액티비티가 종료되는 것은 아닙니다.이렇게 하면 응용 프로그램이 최소화됩니다.

응용 프로그램을 종료하려면 다음 코드를 사용하여 프로세스를 종료합니다.

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

모노 발달을 위해

process.KillProcess(Process.MyPid());

어때.this.finishAffinity()

의사로부터

이 액티비티와 그 바로 아래의 모든 액티비티를 현재 태스크에서 동일한 선호도를 가진 액티비티를 완료합니다.이것은 일반적으로 응용 프로그램을 다른 작업(예를 들어 인식되는 콘텐츠유형의 ACTION_VIEW에서)으로 기동할 수 있고 사용자가 업 네비게이션으로 현재 작업을 종료하고 자신의 작업으로 전환했을 때 사용됩니다.이 경우 사용자가 두 번째 응용 프로그램의 다른 액티비티로 이동한 경우 작업 전환의 일부로 이러한 액티비티를 모두 원래 작업에서 제거해야 합니다.이 종료에서는 이전 액티비티로 결과를 전달할 수 없습니다.이렇게 할 경우 예외가 발생합니다.

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

작업(작업 스택)을 지우고 새 작업을 시작합니다.

Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
System.exit(1);
Intent homeIntent = new Intent(Intent.ACTION_MAIN);
homeIntent.addCategory( Intent.CATEGORY_HOME );
homeIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(homeIntent);
System.exit(1);

이 코드를 사용하면 매우 유용하며 모든 활동을 종료할 수 있습니다.

 @Override
    public void onBackPressed() {
        Intent homeIntent = new Intent(Intent.ACTION_MAIN);
        homeIntent.addCategory( Intent.CATEGORY_HOME );
        homeIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        startActivity(homeIntent);
    }

자마린에서 달성.안드로이드:

    public override void OnBackPressed()
    {
        MoveTaskToBack(true);
        Process.KillProcess(Process.MyPid());
        Environment.Exit(1);
    }

이것을 onClic에 넣습니다.

moveTaskToBack(true);
    finish()

통화할 때 사용해 보세요.버튼 클릭으로 사용하는 경우가 있습니다.

Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);

앱을 닫는 대신 대시보드가 열려 앱이 닫힌 것처럼 보입니다.

Android에 대한 자세한 설명을 보려면 이 질문을 읽으십시오. - 응용 프로그램 코드를 종료하십시오.

이걸 쓰세요.finishAffinity(); finish() 대신 이 버튼에서 finishAffinity(); 이 버튼이 작동하지 않으면 매니페스트에 Android:noHistory="true"를 추가하고 uisng finish(); 또는 finishAffinity(); 로 액티비티를 완료할 수도 있습니다.

도움이 됐으면 좋겠는데...:)

이 두 가지 기능을 호출합니다.

 finish();
 moveTaskToBack(true);

이 메서드를 종료/종료 버튼에 연결

public void quitGame(View view) {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            finishAndRemoveTask();
        } else {
            finish();
        }
    }

singletop 및 finish() onCreate를 사용하여 호출된 ghost 액티비티가 유효합니다.

사용만 가능합니다.moveTaskToBack(true);

System.exit(1) 대신 System.exit(0)을 사용합니다.

finish();
 finishAffinity();
 System.exit(0);

나를 위해 일했다

아직도 궁금해 하는 사람이 있다면, 자마린을 위해서.Android(내 경우 Monogame도 실행 중) 명령어FinishAndRemoveTask()Activity아, 아, 아, 맞다!

단편적으로

getActivity().finishAndremoveTask();

액티비티에서

finish And Remove Task();

백프레스의 코드를 사용하세요.

                    Intent startMain = new Intent(Intent.ACTION_MAIN);
                    startMain.addCategory(Intent.CATEGORY_HOME);
                    startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                    startActivity(startMain);

어플리케이션에서 EventBus(또는 실제로 다른 pub/sub 라이브러리)를 사용하여 액티비티 간에 통신하는 경우 명시적 이벤트를 전송할 수 있습니다.

final public class KillItWithFireEvent
{
    public KillItWithFireEvent() {}

    public static void send()
    {
        EventBus.getDefault().post(new KillItWithFireEvent());
    }
}

은 이 모든 을 해야 의 활동을 할 수 있다는 입니다.finish()이를 위해 상속을 통해 쉽게 shim 액티비티 클래스를 만들 수 있습니다.이러한 클래스는 이 이벤트를 듣고 서브클래스가 다른 모든 것을 구현하도록 합니다.그러면 모든 액티비티가 이 추가 레이어에서 상속되도록 합니다.킬 청취자는 특정 상황에서 죽음을 피하는 것과 같은 오버라이드를 통해 추가 기능을 추가할 수도 있습니다.

응용 프로그램을 종료하려면 아래 두 줄을 실행하십시오.

android.os.Process.killProcess(android.os.Process.myPid());
System.exit(1);

그냥 이렇게 부르세요:

finishAffinity();

이거 될 수 있어 나도 해봤어.

this.finishAffinity();

종료와 종료를 모두 사용하면 앱이 정상적으로 종료됩니다.

finish();

System.exit(0);

언급URL : https://stackoverflow.com/questions/17719634/how-to-exit-an-android-app-programmatically

반응형