2012-02-13 8 views
0

많은 레이아웃이 포함 된 게임을 만들었으므로 작업을로드하는 데 약 15 초 이상의 시간이 걸립니다. 일부 레이아웃을 먼저로드 한 다음 잠시 후에 나머지 레이아웃을로드하여 사용자가 활동간에 검은 색 화면을 볼 필요가 없도록하는 방법이 있습니까?레이아웃의 지연로드

답변

4

스레드을 사용하십시오. 스레드 외부의 일부 레이아웃을로드하고 나머지 스레드를 스레드에로드하십시오. 스레드에 대한 샘플 코드.

new Handler().postDelayed(new Runnable() { 
     @Override 
     public void run() { 
      //write your code here... 
     } 
    }, delay_time); 
+0

run() 메서드 내에서 레이아웃 생성 메서드를 호출하기 위해 코드를 사용했지만 원하는대로 처리했지만 이전에 없었던 일부 ANR 대화 상자를 포함하여 응용 프로그램 속도가 느려졌습니다. 같은 것에 대한 설명이 있습니까 ?? – noob

+0

실행 방법 외부에서 레이아웃 ID를 만들었지 만 실행 방법에서 가시성을 VISIBLE로 설정했습니다. –

+0

코드가 효율적으로 작동했습니다. – noob

1

가능한 경우 얼마나 많은 레이아웃을 제거 할 수 있습니까? 지체없이 작업을 표시하려면 일부 레이아웃을 하드 코딩하여 지연 시간이 다른 스레드에 추가 할 수 있습니다.

+0

메인 스레드에서 레이아웃에 액세스 할 수 있습니까? UI를 만들었던 스레드에서 UI에 액세스 할 수 있다고 생각합니다. – noob

+0

저는 예, 지금은 새로운 시각을 추가하는 AsyncTask가있어 잘 작동한다고 생각합니다. – goodm

1

음, 게으른 초기화는 일반적으로 여기

private View v; 
... 
v.getSomethingUsefullFromView();  

public int getSomethingUsefullFromView() { 
if(v == null) 
    v = new View() 
    jadajada 

return somevalue; 
} 

트릭처럼 보관 if(v == null) v = new View()

당신은 단지 당신이 실제로 필요로하는보기 V를 초기화합니다 그 방법을 니펫을한다는 것입니다 수 있습니다 에.

+0

일반적으로 모든 get 메소드에서 참조 할 initFoobarView()도 있지만 초기화 작업을 수행하는 데 얼마나 많은 작업이 필요한지에 따라 달라집니다. – Rasive