2011-11-24 3 views
0

앱을 닫을 방법이 있습니까? 이전 활동을 표시하고 뒤에 활동이 많기 때문에 마무리를 사용할 수 없습니다 (예 : 1 ~ 2 등 ... 10 일, 10 일에 앱에서 나가기를 원합니다). 이것을 달성하는 방법? 활동 스택 분명 최고가 작동 적절한 경우마지막 활동에서 앱을 닫을 수있는 방법이 있습니까?

+0

비슷한 유형의 질문이 있습니다. 이것은 당신을 도울 수 있습니다. http://stackoverflow.com/questions/2092951/how-to-close-android-application – Sadat

답변

1
Intent intent1 = new Intent(context, Activity.class); 
      intent1.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
      intent1.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
      startActivity(intent1); 

CLEAR TOP은 활동의 당신의 스택을 취소하고

리디렉션 마지막 작업을 완료 할 수 있습니다

옵션 2 :

Borad cast receiver 사용 chk link

1

어떻게 활동이 활동 스택에서 제거하고 (그 finish() 메서드가 호출) 사용자가 멀리에서 탐색하지 않고이 화면에 보이지 않을 때 완료해야하는지 여부를 android:noHistory

사용에 대한 - "true"로하는 경우 끝내야하고 그렇지 않으면 "거짓"이어야합니다. 기본값은 "false"입니다. 값 "true"는 활동이 기록 추적을 남기지 않음을 의미합니다. 작업의 액티비티 스택에 남아 있지 않으므로 사용자가 작업 스택으로 돌아갈 수 없습니다.

0

당신은 사용할 수 있습니다 (하지만하지 않는 것이 좋습니다)

을 System.exit (0);

하거나

moveTaskToBack (TRUE) (즉, 안드로이드가 관리하는 방식 멀티 태스킹입니다) 백그라운드에서 응용 프로그램을 이동할 수 있습니다;

0

장소 종료 버튼을 누른에이 코드

Intent intent = new Intent(ExitConfirmationActivity.this, FirstActivity.class); 
     intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
     startActivity(intent); 

그리고 finish();

1

과 초기 활동의 onResume를 오버라이드 (override)은 또한 같은 질문을했고 definitelly을 죽일 수있는 방법을 찾을 수 없습니다 앱. 그러나 나중에 나는 그 시스템이 설계된 본래의 성격 때문이라는 것을 발견했다.

앱을 닫으려면 활동 스택을 지우고 사용 리소스를 확보하기 만하면됩니다. 이상하게 보입니다. 맞죠? 자신의 앱을 종료 할 권한이 있어야합니다. 하지만 안드로이드 앱에서는별로 권장하지 않으며 Android 가이드 라인을 따르지 않습니다. 또한 사용자에게 이탈 옵션을 제공하지 마십시오. 사용자에게 "종료 옵션"(예 : 보안상의 이유로)을 제공해야하는 Android 애플리케이션의 경우, "로그 아웃 옵션"을 제공하고, 활동 스택을 비우고, 원하는 리소스 및 기타 물건을 비우지 만, 절대로 주 활동을 죽이십시오.

Activity 스택을 지우는 방법은 다음과 같습니다. (1) FLAG_ACTIVITY_CLEAR_TOP 플래그가있는 인 텐트를 사용하거나 (2) Broadcast를 사용합니다.

는 FLAG_ACTIVITY_CLEAR_TOP, 당신은 현재의 활동에 텐트를 넣어 :

Intent intent = new Intent(getApplicationContext(), YourMainActivity.class); 
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
startActivity(intent); 

그리고 방송과 옵션을 닫으려는 모든 활동에 현재 활동에서 브로드 캐스트를 보낼 수 있습니다.

Intent broadcastIntent = new Intent(); 
broadcastIntent.setAction("com.package.ACTION_SPECIFICNAME"); 
sendBroadcast(broadcastIntent); 
finish(); 

을 그리고 (닫으려는 각각에) 다른 활동에서이 브로드 캐스트를 수신 :이 들어

, 당신은 (현재의 활동에) 브로드 캐스트를 보낼 필요

IntentFilter intentFilter = new IntentFilter(); 
intentFilter.addAction("com.package.ACTION_SPECIFICNAME"); 
registerReceiver(new BroadcastReceiver() { 
@Override 
    public void onReceive(Context context, Intent intent) { 
    Log.d("onReceive","Logout in progress"); 
      finish(); 
    } 
}, intentFilter); 

그리고 그게 전부입니다! 이 대답이 당신을 돕기를 바랍니다. 내 영어로 미안해. 나는 그것이 당신이 기다리고 있던 대답이 아니라는 것을 알고 있습니다. 그러나 그것이 현재 (그리고 "올바른") 해결책이라고 생각합니다.

관련 문제