2010-04-27 4 views

답변

2

이 정적 변수를 사용하여 가능하다. 부울 변수 activity_name_dirty = false를 사용하는 것과 같습니다. 해당 활동을 무효로하는 조건이 발생하는 즉시이를 사실로 표시하십시오. 따라서이 활동을 호출 할 때 나중에 언제든지 activity_name_dirty 상태를 확인해야합니다. 그런 다음 활동 플래그를 사용하여 Activity Fundamentals에 설명 된대로 새로운 순간을 만들 수 있습니다.

3

인 텐트 플래그 FLAG_ACTIVITY_CLEAR_TOP을 사용하여 스택에서 활동을 재시작하고 그 위에 있던 모든 것을 지울 수 있습니다. 이것은 당신이 요구하는 것이 아니지만 도움이 될 수 있습니다. 이렇게하려면

는 사용

Intent intent = new Intent(context, classToBeStarted.class); 
intent.setFlag(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
startActivity(intent); 
+0

저도 같은 문제가있어 작동했다. 먼저 활동 A, B, C를 시작합니다. 그런 다음 Intent.FLAG_ACTIVITY_CLEAR_TOP을 설정하여 활동 D를 시작합니다. 그러면 D가 스택의 유일한 활동이됩니다. 어쨌든 이것은 사실이 아닙니다. 뒤로 버튼을 누르면 이전 활동으로 돌아갑니다. – neu242

+2

아니, CLEAR_TOP의 작동 방식이 아닙니다. CLEAR_TOP은 스택에서 대상 활동의 '위'에있는 모든 것을 제거합니다. 그래서 A, B, C가 있고 CLEAR_TOP으로 A를 다시 시작하면 B와 C가 죽게됩니다.D를 시작하거나 C를 다시 시작하면 아무 일도 일어나지 않습니다. 그래서 그가 요구 한 것이 아니지만 유용 할 수 있다고 말한 것입니다. 예를 들어 루트 활동이 될 주 메뉴 화면이있는 경우 사용자가 다른 모든 것을 죽일 때마다 CLEAR_TOP을 사용하여 다시 시작할 수 있습니다. –

+0

그래서 내가 원하는 것을 얻으려면 다음과 같이 대신 할 수 있습니다. 1) A, B, C를 시작하십시오. 2) C를 사용하여 CLEAR_TOP과 D를 식별하는 데이터를 시작하십시오. 3) A에서 finish()를 호출하고 D 더러운 해킹 같은 느낌이지만 작동해야합니다 ..? – neu242

25

이 답변은 늦을 수 있습니다.하지만 누군가가 이와 같은 것을 찾고있는 경우에 대비하여 게시 할 예정입니다. 내가 무슨 짓을

내가이 일 이후 모든 활동에서 지금

h = new Handler() { 

     public void handleMessage(Message msg) { 
      super.handleMessage(msg); 

      switch(msg.what) { 

      case 0: 
       finish(); 
       break; 

      } 
     } 

    }; 

을 가지고, 내가 ACTIVITY_AonCreate() 방법 ACTIVITY_A에서

public static Handler h; 

과의 정적 핸들러를 선언 등이다 ACTIVITY_B 또는 ACTIVITY_C으로 전화 할 수 있습니다.

ACTIVITY_A.h.sendEmptyMessage(0); 

ACTIVITY_A 및 ta-da! ACTIVITY_A은 다른 활동으로 끝났습니다.

+1

이 경우 정적 처리기 객체는 Activity_A에 대한 참조를 보유합니다. Activity_A 전체를 유출 할 수 있습니다. – Robert

+1

하지만 그렇게 할 수는 없습니다. finish()는 비 정적입니다. 정적 함수는 비 정적 함수를 호출 할 수 없습니다. 나는 혼란 스럽다. – dariusiv

3

이 그래서 피곤하지만 좀 더 깊이 테스트 (나는 나중에 참조 할 수 있도록 여기두고)을 한 후 작동하지 않았다 : android:clearTaskOnLaunch

는, 예를 들어, 그 사람은 집에서 활동 P 가정 해 보겠습니다 시작

화면이 나타나고 거기에서 Q 활동으로 이동합니다. 사용자는 다음으로 홈을 누른 다음 활동 P로 돌아갑니다. 일반적으로 사용자는 P 활동에서 마지막으로 수행 한 활동 Q를 볼 수 있습니다. 그러나 P가이 플래그를 "true"로 설정하면 사용자가 홈을 누르고 작업이 백그라운드로 이동하면 그 위에있는 모든 활동 (이 경우 Q)이 제거됩니다. 따라서 사용자는 작업으로 돌아갈 때 P 만 볼 수 있습니다.

https://developer.android.com/guide/topics/manifest/activity-element.html

UPDATE

Intent intent = new Intent(this, MyActivity.class); 
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK|Intent.FLAG_ACTIVITY_NEW_TASK); 
this.startActivity(intent); 
+0

위대한 작품 - 제 경우에도 불구하고'intent.addFlags (..)' – gnB

관련 문제