2011-03-27 6 views
10

나는 예를 들어, 여러 가지 활동과 응용 프로그램을 가지고 : -> 활동 2 -> 활동 3 -내 응용 프로그램의 모든 활동을 닫는 방법?

활동 1> 활동 4

그리고 모든 활동을 종료하고 싶습니다 모든 활동 및 집 전화로 돌아갑니다.

+0

여기 내 대답을 확인하십시오. http://stackoverflow.com/questions/9426346/how-to-kill-all-activ-in-android-application/14393598#14393598 –

+0

나는이 솔루션이 "KillReceiver"솔루션. – TommyTh

+0

[1] 내가 그것을 도움이 될 수 있도록 노력하겠습니다 [여기] 내 대답을 확인 [1] : http://stackoverflow.com/questions/14001963/finish-all-activities-at-a-time/ 24833606 # 24833606 –

답변

20

당신은 BroadcastReceivers를 사용하여 해당를 얻을 수 있습니다

  • 이 같은 BaseActivity 만들기 : 당신의 활동이 있음을 확장합니다

public class BaseActivity extends Activity { 
    private KillReceiver mKillReceiver; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     mKillReceiver = new KillReceiver(); 
     registerReceiver(mKillReceiver, 
      IntentFilter.create("kill", "spartan!!!")); 
    } 
    @Override 
    protected void onDestroy() { 
     super.onDestroy(); 
     unregisterReceiver(mKillReceiver); 
    } 
    private final class KillReceiver extends BroadcastReceiver { 
     @Override 
     public void onReceive(Context context, Intent intent) { 
      finish(); 
     } 
    } 
} 

  • BaseActivity.
  • 당신은 스택을 취소 할 때마다
  • :

Intent intent = new Intent("kill"); 
intent.setType("spartan!!!"); 
sendBroadcast(intent); 

+6

'의도 (Intent)'또는 '의도 필터 (IntentFilter)'에 대해 넌센스/불법 MIME 유형을 사용하지 말 것을 권유하십시오. 액션 문자열은 충분히 고유하게 만들 수 있습니다. 고유 한 액션 문자열이 불충분하다는 점을 염려 할 경우 최신 버전의 Android에서'setPackage()'를 사용할 수 있습니다. – CommonsWare

+0

당신이 맞습니다, 조언 주셔서 감사합니다 :) – Cristian

+3

액션은 죽일 수 있지만 콘텐츠를 사용하는 경우 예제가 더 좋을 수 있습니다 : // 충돌로 인한 스파르타 :-) – neteinstein

2

그리고이 모든 활동

That is user-hostile in Android에서 모든 활동을 종료하고 싶습니다. 하지 마세요.

와 나는 이것이 무엇을 의미하는지 전혀 모르는 집 전화

에서 이동합니다.

사용자가 홈을 누르면 사용자가 응용 프로그램으로 돌아갈 때 활동이 약간의 RAM에 남아 있어야합니다.

귀하의 활동 중 하나가 응용 프로그램의 "집"임을 의미하고 사용자가 일부 단추 또는 옵션 메뉴 항목을 누를 때 해당 활동으로 돌아가려면 startActivity()를 호출하십시오. 텐트 것을 :

  • 으로 돌아가려면 활동이 당신이 앞으로 그 활동을 가져오고 사용자가 이전에 출시했던 다른 활동을 없애 할 것을 나타 내기 위해서 (때문에), 플래그에서 FLAG_ACTIVITY_CLEAR_TOP|FLAG_ACTIVITY_SINGLE_TOP을 가지고 식별
+0

FLAG_ACTIVITY_CLEAR_TOP | FLAG_ACTIVITY_SINGLE_TOP (제 경우에는 작동하지 않습니다)로 [** delegate **] (http://en.wikipedia.org/wiki/Delegation_pattern)하는 것입니다. . 도와주세요. –

+2

@ BorntoWin : 오른쪽 상단 모서리에있는 "질문하기"버튼을 클릭하고 질문에 * 정확하게 설명하십시오. "내 경우에 효과가 없다"는 것은 "작동하지 않습니다"와 "내 경우에" 부분품. – CommonsWare

3

AndroidManifest를 엽니 다.XML과 다음과 같은 속성을 예를 들어

android:launchMode="singleTask" 

을로 돌아가서 추가하고 싶은 활동을 찾을 수는 HomeActivity 클래스는 어떤 시점에서 안드로이드 매니페스트

<activity android:name=".HomeActivity" 
    android:launchMode="singleTask"/> 

이있을 수 있습니다, 당신은 모든 닫을 수 있습니다 예를

startActivity(new Intent(this, HomeActivity.class)); 

일반적 의도에 엑스트라를 전달하는 경우에 대한 startActivity를에게 표준적인 방법을 사용하여이 하나의 상단에 활동으로이 작업을 수행 할 필요가 없습니다 그것은 이전의 어떤 상태로 돌아올 것이고, 뒤로 버튼을 치는 것과 같은 애니메이션을 동반 할 것입니다.

5

다음 플래그를 사용하여 이전의 모든 활동을 취소 할 수 있습니다

intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK); 

를 내가 당신을 도움이되기를 바랍니다!

관련 문제