2014-10-20 3 views
0

나는 사용자 프레스가 다시 버튼 -활동은 파괴되지

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

그래서 유일한 방법은 앱을 수동으로 task manager 등을 사용하는 것입니다 사용자의 의지 종료를 중지 할 때 배경에가는 응용 프로그램을 가지고있다.

지금, Android Studio 응용 프로그램에, 아직, 내 안드로이드 장치에 을 task manager를 사용하여 내 응용 프로그램을 닫아 내 onDestroy을 테스트하기 위해 노력하고있어 아직 살아 것 같다, 그것은 Session: '<app_name>' : runningonDestroy가 호출되지 말한다.

왜 그런가요? 어떻게 고칠 수 있습니까?

** task manager을 사용하여 내 앱을 중지 할 때 해당 앱을 종료하고 수동으로 앱을 중지 할 때 앱이 종료되기를 원할 경우 사용자가해야하기 때문에 onDestroy이 표시되도록하고 싶습니다. 단추. 다시 버튼을 누르면 앱이 살아 있고 괜찮아요.

+0

작업 관리자를 통해 앱을 종료 할 때'onDestroy' 또는 다른 함수가 호출되지 않는다고 생각합니다. 말 그대로 프로세스를 중단시키고 앱이 아무 것도 할 수있는 기회를주지 않는다고 생각합니다. – Randy

답변

0

설정에서 개발자 옵션 →, 앱 섹션으로 이동하여 옵션 "활동을를 보관하지 마십시오 "을 할 수 있습니다. 그런 다음 뒤로 버튼을 누를 때마다 앱이 파괴됩니다. 나는 당신이 또한 super.onBackPressed();를 호출 할 수 있습니다, startActivity(setIntent);

후,

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) 
{ 
    if ((keyCode == KeyEvent.KEYCODE_BACK)) 
    { 
     finish(); 
    } 
    return super.onKeyDown(keyCode, event); 
} 
+0

찾을 수 없습니다. – user2162550

+0

기기의 개발자 설정 http://media02.hongkiat.com/android-developer-options-hidden-features/dont-keep-activities.jpg – JoaoBiriba

+0

확인해 봤습니다. , 그것은 작동하지만, 정상적인 방법으로 실행됩니다 같은 방식으로 응용 프로그램을 테스트 할 필요가, 내 말은, 뒤로 버튼을 presing에 의해, 그것은 배경으로 이동해야합니다 파괴되지 않을 때, 그리고 사용자가 응용 프로그램을 중지 할 때 'onDestroy'가 호출되어야합니다. 당신이 제안한 것은 사용자가 뒤로 버튼을 누를 때 앱을 파괴하는 것입니다. – user2162550

0

활동을 파괴하려면 finish()으로 전화하십시오.

@Override 
public void onBackPressed() { 
    Intent setIntent = new Intent(Intent.ACTION_MAIN); 
    setIntent.addCategory(Intent.CATEGORY_HOME); 
    setIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
    startActivity(setIntent); 
    finish(); 
} 
+0

언제 불러야합니까? 사용자가 앱을 중지 할 때 수행해야합니다. – user2162550

+0

코드가 업데이트되었습니다. :) – Swayam

+0

감사합니다,하지만 사용자가 수동으로 응용 프로그램을 중지 할 때 작동해야합니다, 내 질문을 편집 할 것입니다 – user2162550

0

당신은 예를 들어, finish();를 호출 할 수 있습니다 당신은 당신의 활동에 onKeyDown에 무시할 수있는 응용 프로그램을 파괴하는 뒤로 버튼 동작을 대체하려면 또는 결국.

+0

죄송합니다. 질문 한 내용이 아닙니다. – user2162550

2

왜 뒤로 활동을 다시 시작 했습니까? 그냥 아무 것도 하지마.

@Override 
public void onBackPressed() { 
} 
+0

수정 된 질문 – user2162550

+0

을 참조하십시오. onDestroy()는 신뢰할 수없는 후크입니다 (Google 설명서 참조). 앱의 자동 정리에서 트리거되지 않으며 수동으로도 수행되지 않을 수 있습니다. –