2012-06-19 8 views
0

나는 한 번만 만들어야하는 활동이 있습니다. 즉, onCreate은 한 번만 호출 할 수 있습니다. 그것이 다시 호출되면 Activity가 아무 것도하지 않기를 바란다.onCreate에서 즉시 반환 - 괜찮습니까?

다음을 수행하는 것이 좋습니다 :

protected void onCreate(Bundle savedInstanceState) { 
    this.setTheme(android.R.style.Theme_Translucent_NoTitleBar_Fullscreen); 
    super.onCreate(savedInstanceState); 

    if(onCreateWasCalledAlreadyBoolean) { 
     setResult(RESULT_OK); 
     finish(); 
     return; 
    } 

    //Do other stuff here 
} 

답변

1

나는 당신이을 이해한다고 가정합니다. 내 말은, 당신은 여기에 적용되지 않는 무언가를 피하려고하지 않는다는 것입니다 (onRestart 등등 때마다 onCreate가 여러 번 호출 될 수 있음을 생각하십시오).

기술적으로는 완벽합니다. 당신이 당신의 활동을 호출해야하는 이유

그러나, 당신이 더 많은 약 을 걱정해야한다 ("") 그건 당신이 무슨 생각을하는지의 경우는 전혀 생성되지 않아야 다시합니다. 당신이 적발 한 경우

자신이 활동 가 이미 "라고"경우 확인 (?)이 이전 활동 ("B")을 의미 할 수있다 응용 프로그램의 논리 흐름의 실수, 그리고 B 대신 실제로 해당 활동을 시작해야하는지 확인해야합니다. . 활동을 호출해야하는지 결정해야한다면 을 확인한 후을 시작하십시오.

는 당신이 활동을 다시 시작하는 경우 그 적용 생각하지 않습니다 (예 : 다시 이동 홈으로 이동), 그러나 다시 당신은 내가 말할 수있는 무엇을 (B을했던 곳에서 다시 시작해야한다). A으로 다시 이동하지 않습니다. 그리고 당신은 많은 세부 사항을 말하지 않았으므로, 이것은 evilmage93처럼 스플래시 화면 같은 것 같아요.

실제로 이것이 스플래시 화면 인 경우, 사용자가 작업 스택에서 앱을 제거하기 위해 모든 방법으로 돌아올 때마다 표시하는 것이 좋습니다 (조언과는 반대). 즉, 사용자가 '전면 도어'에서 앱을 다시 시작할 때마다

궁극적으로 디자인 결정이지만 앱이 처음으로 스택에로드 ("입력") 될 때마다 스플래시 화면이 표시되는 것을 선호합니다. 분명히 완료되면 A을 호출하기 전에 B (스플래시 화면은 처음 실행될 때도 완료되면 finish으로 간주됩니다). 일관성 문제입니다. 사용자가 동일한 작업 ("현관"에서 시작 앱)을 수행 할 때마다 동일한 앱이 동일한 방식으로 작동해야합니다.

그래도 나는 당신이 그런 방식으로 질문했기 때문에 몇 가지 일반적인 측면을 다루는 질문에 대답했습니다.

// 것은 편집 :

마지막으로, 그 onCreateWasCalledAlreadyBoolean을보고 난 당신이 활동 수명주기 메커니즘의 일부를 재발견하는 것을 시도 할 수있다 두려워.이 경우 사용자가 해당 동작을 예상하므로 일반 활동 논리를 진행하십시오. 일반적으로 나는 사람들이 시스템에 의해 살해되고 다시 시작 되었기 때문에 정상적인 활동로드를 중단하라고 조언하지 않습니다.

-1

왜 안 보이나요. 그래도 활동을 다시 시작하지 않는 것이 더 간단하지 않습니까?

안 괜찮습니까? 성능 .. 인식되지 않는 예외 .. 코드 선명도?