2012-09-23 2 views
3

시나리오는 다음과 같습니다.작업 관리자가 작업에서 마지막으로 표시된 활동을 다시 만들지 못하도록합니다.

실행 응용 프로그램을 시작하고 B로 이동 한 다음 C로 홈 버튼을 누릅니다. C가 파괴됩니다. 작업 관리자를 가져와 내 앱 아이콘을 누릅니다. 활동 C가 재생성 중입니다. 이 동작을 어떻게 중지시킬 수 있습니까? 내가 원했던 것은 활동 A로 되돌아가는 것입니다.

가장 가까운 곳은 Intent.FLAG_ACTIVITY_NO_HISTORY로 활동 B, C를 시작한 것입니다. 그러나이 플래그의 문제점은 앱의 수명 기간 동안 활동 B, C가 다시 생성되는 것을 방지한다는 것입니다. 작업 관리자가 사용자를 A로 유도하면 생성이 가능해야합니다.

편집 : 나는 대신이 방법 사용하는 경우 Intent.FLAG_ACTIVITY_NO_HISTORY 경우에 관찰 동일한 동작 :

class C extends Activity 
{ 
... 
    @Override 
    protected void onDestroy() 
    { 
     // last resort 
     finish(); 
     super.onDestroy();  
       //finish(); 
    } 
} 

내가 활동을 C로 다시 탐색 할 수는는 그들의 OnDestroy()는 한 번만 호출되고 나면 :(

noHistory = "true"로 활동 AT & T를 :

감사

기계 대 남자의 주말 후

답변

0

, 이것은 내가 경험 한 것입니다 ribute는 활동 스택에서 그 아래에있는 다른 활동에서 시작될 수 없도록합니다 (startActivity()). 것은 전체 의도로이 플래그를 추가하는 방법을 통해 전달 된 활동 탐색 논리 그 것이었다 :

context.startActivity(intent.setFlags(intent.getFlags() | Intent.FLAG_ACTIVITY_REORDER_TO_FRONT)); 

안드로이드는 'noHistory'활동 "앞으로 순서"수없고, 나는 버그로 가져 가라. noHistory 활동은 이미 finish()되어 있으므로, 새로운 인스턴스를 호출해야합니다 ... 작동 된 것은 FLAG_ACTIVITY_CLEAR_TOP을 활동 A (OP 참조)에서 사용하는 것이 었습니다. 이렇게하면 B와 C가 모든 시나리오에서 올바르게 인스턴스화됩니다. 그러나 이것으로는 충분하지 않았습니다. OOM 오류와 라이프 사이클/응용 프로그램 논리의 복잡성으로 인해 작업을 마쳤습니다.

android:launchMode="singleTask" 

을 또는 귀하의 요구 사항 사용 다른 속성을 기반으로 : 당신이하지 않으려는 Manifest.xml 파일이 활동에 지정

0

편집이 다시하세요. 자세한 설명은 here으로 가십시오.

관련 문제