ViewFlipper를 추가하면 UI 스레드가 완료 될 활동에서 onCreate() 메서드를 기다리는 것 같습니다. 그런 다음 두 번째보기를 표시합니다. 왜 그렇게됩니까?ViewFlipper - 처음보기를 강제로 표시하는 방법?
내 현재 코드는 다음과 같습니다
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_menu);
viewFlipper = (ViewFlipper) findViewById(R.id.ScreenSwitch);
viewFlipper.setInAnimation(AnimationUtils.makeInAnimation(this, true));
viewFlipper.setOutAnimation(AnimationUtils.makeOutAnimation(this, true));
//do the necessary loading, when the splash screen persists
doSomeLoading();
viewFlipper.showNext();
}
는 사실, doSomeLoading 루프 10 개 수백만 계산하고 아무것도하지 않고 대한 구성되어 있습니다. 이제 루프가 완료 될 때까지 대기하고 두 번째보기를 보여줍니다.
무의미한 것처럼 보이기 때문에 별도의 스레드를 만들지 않고도 솔루션을 고맙게 생각합니다. invalidate()는 도움이되지 않습니다.
아니요, 여전히 doSomeLoading() 이후에 화면을 새로 고칩니다. 화면이 검은 색이됩니다. doSomeLoading() 내부입니다. 그런 다음 원하는보기가 나타납니다. – LordTwaroog
UI 스레드 또는 백그라운드 스레드에서 루프를 실행하고 있습니까? UI 스레드에 있으면 검은 화면이 왜 생겼는지 설명 할 수 있기 때문입니다. 시스템은 다음 행을 실행하기 전에 doSomeLoading 코드를 완료합니다. – Sephy
하지만 처음에는 첫 번째 견해를 갖고 싶습니다. 로드 후에는 두 번째 (viewFlipper.showNext())가 표시됩니다. 개념이 조금 바뀌었기 때문에 별도의 활동을 시작하기 만하면됩니다. 스레드가 시작되고로드 된 후 새 활동이 시작된 다음 스레드가 종료됩니다. 그러나 이것은 약간 추한 것 같습니다. 이 일을 좀 더 우아한 방법으로 찾으려고했습니다. – LordTwaroog