프로그래밍 방식으로 Android 응용 프로그램을 종료하기위한 코드를 찾았습니다. onDestroy ()에서 다음 코드 중 하나를 호출하면 응용 프로그램이 완전히 종료됩니까?
System.runFinalizersOnExit(true)
(또는)android.os.Process.killProcess(android.os.Process.myPid());
종료 버튼을 클릭 한 후 백그라운드에서 응용 프로그램을 실행하고 싶지 않습니다. Pls는이 코드 중 하나를 사용하여 응용 프로그램을 종료 할 수 있다고 제안합니까? 그렇다면 어떤 코드를 사용할 수 있습니까? Android에서 앱을 종료하는 좋은 방법입니까?
답변
API 16부터 finishAffinity 메소드를 사용할 수 있습니다. finishAffinity 메소드는 이름과 Javadoc 설명으로 모든 관련 활동을 닫는 것과 매우 비슷합니다.
this.finishAffinity();
현재 작업에서 동일한 선호도를 가진 바로 아래의 모든 활동뿐만 아니라이 활동을 완료하십시오. 일반적으로 응용 프로그램을 다른 작업 (예 : 이해하는 콘텐츠 유형의 ACTION_VIEW에서)으로 시작할 수 있고 사용자가 위로 탐색을 사용하여 현재 작업에서 자체 작업으로 전환 한 경우에 사용됩니다. 이 경우 사용자가 두 번째 응용 프로그램의 다른 활동으로 이동 한 경우 모든 작업을 작업 스위치의 일부로 원래 작업에서 제거해야합니다.
이 마무리를 통해 이전 활동에 결과를 전달할 수 없으며 그렇게하려고하면 예외가 발생합니다.
API 21 부터 매우 유사한 명령을 사용할 수 있습니다
finishAndRemoveTask();
이 작업의 모든 활동을 완료하고 최근 작업 목록에서 제거합니다.
답변
getActivity().finish();
System.exit(0);
이것이 앱을 종료하는 가장 좋은 방법입니다. !!!
나를위한 최고의 솔루션.
답변
finishAffinity();
System.exit(0);
응용 프로그램 finishAffinity();
없이 사용 System.exit(0);
하지만 응용 프로그램은 종료되지만 할당 된 메모리는 여전히 휴대 전화에서 사용 중이므로 깨끗하고 실제로 응용 프로그램을 종료하려면 두 가지를 모두 사용하십시오.
이것은 가장 간단한 방법이며 어디에서나 작동하며, 실제 앱을 종료하고, 많은 활동을 열면 여전히 문제없이 종료됩니다.
버튼 클릭 예
public void exitAppCLICK (View view) {
finishAffinity();
System.exit(0);
}
또는 예를 들어 3 개의 버튼이있는 경고 대화 상자를 사용하여 예를 들어 취소하고 취소하는 것이 좋습니다.
// alertdialog for exit the app
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);
// set the title of the Alert Dialog
alertDialogBuilder.setTitle("your title");
// set dialog message
alertDialogBuilder
.setMessage("your message")
.setCancelable(false)
.setPositiveButton("YES"),
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int id) {
// what to do if YES is tapped
finishAffinity();
System.exit(0);
}
})
.setNeutralButton("CANCEL"),
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int id) {
// code to do on CANCEL tapped
dialog.cancel();
}
})
.setNegativeButton("NO"),
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int id) {
// code to do on NO tapped
dialog.cancel();
}
});
AlertDialog alertDialog = alertDialogBuilder.create();
alertDialog.show();
답변
응용 프로그램을 종료해야하는 경우에 대해 정말 열심히 생각하십시오. OS에서 리소스를 언제 어디서 언제 해제 할 수있게합니까?
그렇지 않으면 정말 확실하다면
finish();
우선은 큰 질문 / 답변 콤보 @gabriel 게시 읽기 : @ 데이브 애플 턴의 의견에 대한 반응으로 눈살을 찌푸리게하는 응용 프로그램을 종료되어 있습니까?
이제 우리가 그것을 가지고 있다고 가정 할 때, 여기에 질문에 대한 답이 finish()
있습니다. 종료로 무언가를 할 때 필요한 코드는 입니다. 분명히 당신은 하나 이상의 활동 등을 가질 수 있지만, 요점이 아닙니다. 일부 유스 케이스로 실행할 수 있습니다.
- 메모리 사용과 “백그라운드에서 실행되지 않음”으로 인해 사용자가 모든 것을 종료하도록하려고합니다. 의심 할 여지가 없습니다. 사용자가 백그라운드에서 특정 활동을 중지하게하면서 OS가 불필요한 원치 않는 명령을 종료하도록합니다.
- 사용자가 앱의 이전 활동으로 이동하지 않기를 원하십니까? 필요하지 않도록 구성하거나 추가 옵션이 필요합니다. 대부분의 경우 back = previous-activity가 작동하는 경우 사용자가 다른 작업을 수행하려는 경우 집으로 돌아 가지 않습니까?
- 어떤 종류의 재설정이 필요한 경우 응용 프로그램이 종료되었는지 여부 / 방법 / 등을 확인할 수 있으며 활동에 다시 초점이 맞으면 조치를 취할 수 있습니다.
결국 결국 finish()
모든 것을 죽이지 않지만 여전히 내가 생각하는 도구입니다. “모든 활동 종료”에 대한 사용 사례가 있다면 아직 찾지 못했습니다.
답변
어떤 경우에는 응용 프로그램을 종료해야한다고 생각합니다. 예를 들어, 로그인 후에 만 앱을 사용할 수 있습니다. 로그인 활동에는 ‘로그인’과 ‘취소’의 두 가지 버튼이 있습니다. ‘취소’버튼을 클릭하면 ‘앱 종료’를 의미합니다. 아무도 백그라운드에서 앱을 살아있는 것을 원하지 않습니다. 따라서 일부 경우 앱을 종료해야한다는 데 동의합니다.
답변
를 ExitActivity
만들고 매니페스트에 선언하십시오. 그리고 ExitActivity.exit(context)
앱 종료를 요청하십시오 .
public class ExitActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
finish();
}
public static void exit(Context context) {
Intent intent = new Intent(context, ExitActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
context.startActivity(intent);
}
}
답변
android에는 응용 프로그램이 종료되지 않습니다 . SampleActivity.this.finish (); 현재 활동을 완료합니다.
한 활동에서 다른 활동으로 전환 할 때 이전 활동을 완료하십시오.
Intent homeintent = new Intent(SampleActivity.this,SecondActivity.class);
startActivity(homeintent);
SampleActivity.this.finish();