2013-09-04 2 views
3

작업이 완료 될 때까지 기다리지 않고 끝내는 방법을 찾아 내서 조금 괴롭혔습니다. 나는 그 간단한 "반환"을 알고있다. 성명서는 그 트릭을 할 것이지만, 제 건축에서 나는 그것을 할 수 없습니다.완료를 기다리지 않고 작업 완료

내가 현재 가지고 :

public abstract class BaseFragmentActivity extends FragmentActivity { 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      if (savedInstanceState != null) { 
       finish(); 
       return; 
      } 
    } 
} 

public class MainActivity extends BaseFragmentActivity { 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      /* code still executed here even when parent finish(); is called */ 
    } 
} 

어떻게라고 내 추상 클래스의 마무리()하면 MainActivity의 코드의 실행을 방지 할 수 있습니다?

업데이트 된 코드 :하지만

public abstract class BaseFragmentActivity extends FragmentActivity { 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      if (savedInstanceState != null) { 
       finish(); 
       return; 
      } 
    } 
} 

public class MainActivity extends BaseFragmentActivity { 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      if (isFinishing()) { 
       return; 
      } 
    } 
} 

이상한 점은 "반환"작동하는 것 같다,하지만 내 FragmentManager 어떻게 든 마지막에 조각을 시작합니다.

+0

에 포장하려고하면 다음 사용 주요 활동? –

+0

예. 실제로 첫 줄입니다. 나는 그 질문을 업데이트 할 것이다. – Tomap

+0

@Tomap 왜 추상 클래스입니까? 전에도 .call super가되어야합니다. 또한 페이지 끝에있는 참고 사항을 확인하십시오. http://developer.android.com/training/basics/activity-lifecycle/starting.html – Raghunandan

답변

1

당신이 super.onCreate()를 호출하는

if(isFinishing()){ 

    //code you don't want to execute if finish() is called 

} 
+0

고마워, 그게 내가 찾고 있었던 것이었다. 답변을 내 코드로 업데이트했습니다. – Tomap

1

부울을 만들어서 true로 설정하고 finish가 실행되는 이유는 무엇입니까? 여기

boolean end = false; 

당신은

public abstract class BaseFragmentActivity extends FragmentActivity { 
    protected void onCreate(Bundle savedInstanceState) { 
end = true; 
    } 
} 

사실 확인하고 문이

public class MainActivity extends BaseFragmentActivity { 
    protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
if(end = false){ 
//stuff here} 
else { 
finish(); 
} 
    } 
} 
+0

사실 부모 클래스에서 추상 불린 속성을 인스턴스화하는 것에 대해 생각했지만, 이미 존재하는 메소드를 놓치고 내가 필요한 바로 그 것을 수행하기를 바랬습니다. 내가 원하는 답을 찾지 못하면 답장을 확인할 것입니다. :) – Tomap

+0

ty, 행운 = =) –

+0

내가 찾고 있던 부울 값이 응답을 유발합니다. 귀하의 의견을 유용하게했으며 그의 답변을 확인하겠습니다. :) – Tomap