다른 탐색 항목을 누르면 다른 단편을 표시하는 탐색 서랍이 포함 된 활동이 있습니다. 문제는 이러한 조각 중 하나가로드 될 때 눈에 띄는 지연이 있음을 나타냅니다.안드로이드 - 조각을 교환하기 전에 조각보기로드
내 액티비티의 onCreate
메서드에서 각 조각을 미리로드하여 사용자가 탐색 항목을 누를 때 쉽게 교체 할 수 있도록 스레드를 시작합니다.
내 코드는 다음과 같이 보입니다 :
public class MainActivity extends Activity {
protected void OnCreate {
// Get instance of Thread InitialiseNavFrags.
InitialiseNavFrags fragmentInit = new InitialiseNavFrags();
fragmentInit.start();
}
private void selectItem(position) {
...
final FragmentTransaction ft = getFragmentManager().beginTransaction();
// Wait until sportsFragment is loaded.
while (sportsFragment == null) {
try {
Thread.sleep(300);
} catch (InterruptedException e) {
System.out.println("Caught InterruptedException :" + e);
}
}
// Switches fragments to FavouriteFragment
ft.replace(R.id.content_fragment, sportsFragment, "Sports");
// Noticeable delay here
ft.commit();
}
...
class InitialiseNavFrags extends Thread {
public void run() {
favouriteFragment = new FavouriteFragment();
sportsFragment = new SportFragment();
}
}
}
public class SportsFragment extends Fragment {
public View onCreateView (...) {
// Task with noticeable delay
return view;
}
}
내 문제의 selectItem
실행 SportFragment
'는 MainActivity
때까지의 onCreateView
이 실행되지 않는다'이다과 조각이 눈에 띄는 지연이 때 발생하는 교환한다 사용자는 네비게이션 아이템을 누른다.
그럼, 눈에 띄는 지연이 없도록 Fragment의 뷰를 초기화 할 수 있습니까?
메인 UI 스레드에서'Thread.sleep()'을 사용하지 마십시오. 이러한 조각을 백그라운드 스레드에 생성하지 말고, 대신에 onCreateView()의 onCreateView()를 향상 시키십시오 (너무 많은 뷰?). – Luksprog