2011-10-20 3 views
1

배경 화면으로 전환되면 내 응용 프로그램을 닫고 싶습니다.응용 프로그램을 백그라운드로 이동할 때 (홈 키를 통해) 응용 프로그램을 닫으려면 어떻게합니까?

내 현재 메서드는 주 활동 중 하나의 OnPause()에서 finish()를 호출하는 것입니다.

그러나 내 응용에는 여러 가지 활동이 있습니다. 내 주요 활동에서 다른 활동으로 이동하면 주요 활동이 종료됩니다.

내가 제외시킨 것이 아닙니다. 전체 응용 프로그램이 백그라운드로 바뀔 때만 (예 : 홈 키를 통해) 내 응용 프로그램을 닫을 수 있습니다.

감사합니다.

+0

StackOverflow에서 이와 유사한 [질문] [1]에 대한 응답을 참조하십시오. [1] : http://stackoverflow.com/questions/2042222/close-application –

+0

어느 쪽이든 유지 해달라고 당신의 활동의 스택 – ingsaurabh

+0

http://stackoverflow.com/questions/6693896/home- key-press-event-listener –

답변

-1

당신은 당신의 자신의 응용 프로그램의 프로세스를 종료 할 수 있습니다 Process.killProcess (Process.myPid())를 사용하여. 앱에 초점이 맞지 않았을 때 알려주는 콜백에 의존 할 수없고 onPause에 의존 할 수 없다는 점을 감안할 때 원칙적으로 onPause 동안 자살 노트를 게시 할 수 있습니다.

_runnable = new Runnable() { 
     @Override 
     public void run() { 
      Process.killProcess(Process.myPid()); 
     }; 

_handler = new Handler().postDelayed(_runnable, 3000); 

다음 한 다른 활동 절편을 가지고 onResume 동안을 취소 :

_handler.removeCallbacks(_runnable); 

(여러 활동에서 변수에 대한 액세스를 제공 할 수있는 방법이 필요합니다.)을 취소 결코 경우 그러면 앱이 결국 죽을 것입니다.

클루 지하지만 가능하다고 생각합니다.

+0

아니요 하나의 finish() 응용 프로그램 구성 요소. 하나는 ** 그들의 프로세스를 죽이지 않습니다 **. 그렇게한다면 안드로이드가 다시 만들 것입니다. –

1

당신은 그렇게 할 필요가 없습니다 .. 안드로이드는 홈 키를 누를 때 .. 그 자체로 그것을 수행하고 자원을 필요로 할 때 ...이 읽기 더 http://developer.android.com/reference/android/app/Activity.html

+0

고마워,하지만 나는 특별한 공명을 위해 그렇게해야만 해. – dong221

+1

@ dong221 ... 1 화면에서 다른 화면으로 이동할 때마다 onPause() 메서드가 호출되며 때로는 onDestroy() 메서드가 호출됩니다. 홈 키 누름 동작은 기본적으로 완료되므로 직접 할 수는 없습니다. – ngesh

-1

이제 이것을 통해 UR 매니페스트가 어떻게 보이는지 생각해보십시오. 주 활동 Hello는 Hello3를 시작하는 Hello2를 시작합니다.

 <application android:icon="@drawable/icon" android:label="@string/app_name"> 
    <activity android:name=".Hello" android:label="@string/app_name"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    <activity android:name="Hello2"></activity> 
    <activity android:name="Hello3"></activity> 
    <activity android:name="Hello4"></activity> 
</application> 

이제 Hello 활동을 시작하는 더미 런처 활동 (HelloStarter)을 작성하십시오. 업데이트 된 매니페스트를 참조하십시오. UR 안녕하세요 활동의들의 OnDestroy에서

 <application android:icon="@drawable/icon" android:label="@string/app_name"> 
    <activity android:name=".HelloStarter" android:label="@string/app_name" 
     android:clearTaskOnLaunch="true"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    <activity android:name="Hello"></activity> 
    <activity android:name="Hello2"></activity> 
    <activity android:name="Hello3"></activity> 
    <activity android:name="Hello4"></activity> 
</application> 

()이 추가 :이 작동

 System.exit(0); 

.... !!!!

+0

죄송합니다, 작동하지 않습니다. 하지만 고마워. – dong221

+0

안녕하세요 plz 업데이트 된 답변을 확인하십시오. 도움이 될 것입니다. – Rohit

+0

아니요, 프로세스를 종료해도 프로세스가 작동하지 않습니다. 안드로이드는 당신이 아니며 프로세스가 존재해야하는지 또는 존재하지 않아야 하는지를 결정합니다. 프로세스가 존재해야하거나 존재하지 않아야한다고 판단한 경우 프로세스가 존재해야한다고 판단되면 다시 생성 할 수 있습니다. –

관련 문제