2013-10-11 2 views
2

현재 앱을 개발 중이며 (나에게있어 다른 질문을 한 적이있을 수도 있음) 유용성 문제가 있습니다. 내비게이션 서랍이 있고 사용자가 항목 중 하나를 클릭하면 다른 프래그먼트가 기본 frame_content를 대체합니다. 내가 만나는 문제는 트랜잭션이 내 devie에 약간의 시간이 걸린다는 것입니다.안드로이드 애플리케이션의 프래그먼트 트랜잭션로드 시간이 향상되었습니다.

탐색 창에서 하나의 항목을 클릭하면 몇 초 동안 앱이 멈추고 계속 정상적으로 작동합니다.

또한 문제가있는 곳을 알기 때문에 데이터가없는 조각을 즉시 교체하기 때문에 즉시 문제가 발생합니다. 앱이 실제로 많은 양의 데이터를 표시해야한다는 것입니다. 나는 HashMap<String, Collection<String>>을 조각에 전달하고 거기서 그것을 읽는다. 배열에 저장하고 그 배열을 for 루프에서 다시 읽고 데이터를 표시합니다.

필자는 주된 활동에서 모든 데이터를 읽은 다음 여러 배열을 조각에 전달하는 것과 같은 다양한 방법을 생각했습니다. 하지만 문제는 해시 맵에 13 개의 다른 키의 데이터가 포함되어 있기 때문에 각 조각마다 13 개의 배열이 필요하다는 것입니다. 각 키는 1 개의 값을가집니다. 총 50 개의 항목이 있습니다. 따라서

50 개의 항목이 포함 된 13 개의 키에는 1 개의 값이 들어 있습니다.

이것은 기기에로드하는 데 사용할 데이터입니다. 그래서 로딩 단편의 속도를 어떻게 향상시킬 수 있을지 생각했습니다.

스플래시 화면이로드되는 동안 AsyncTask를 사용하여 XML에서 데이터를 다운로드하고 다른 해시 맵에 저장하고 있습니다 (로드 한 XML에 따라 다름). 그런 다음 주 활동에 대한 새로운 의도를 시작하고 모든 해시 맵을 전달합니다. 탐색 창 목록에 따라 새 단편이 열리고 해시 맵이 단편의 함수로 전달됩니다. 데이터를 배열로 읽어 들이고 배열을 OnCreateView 메서드에서 다시 읽어 와서 레이아웃에 데이터를 추가합니다.

속도 향상 아이디어를 알려주십시오. 이것은 내가 현재 내 조각

protected void onNavItemSelected(int id) { 
    FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); 
    ft.setCustomAnimations(R.anim.slide_in_left, R.anim.slide_out_right); 
    switch ((int) id) { 
    case 101: 
     MainFragment.passList(hashMap); 
     ft.replace(R.id.content_frame, new MainFragment()); 
     ft.commit(); 
     break; 
//further cases.... 

답변

3

을 변경하는 방법입니다 아마

ft.commit(); 
getSupportFragmentManager().executePendingTransactions(); 
break; 

당신이

http://developer.android.com/reference/android/app/FragmentManager.html#executePendingTransactions()

(주 스레드에서 호출해야합니다) 빠른 트랜잭션을 실행하는 데 도움이 될 것입니다 또는 트랜잭션 자체에 문제가 없으면 어쩌면 개선이 필요한 루프일까요?

+0

내 루프 인 것 같습니다. 이후 for 루프에 하나의 항목 만있을 때 거의 instatnly로드합니다. 나는 단지 5를 가지고있을 때 그것도 너무 빠르게 적재한다. 그러나 내가 50을 가지고있을 때 (내가 필요로한다) 그것은 너무 오랜 시간이 걸린다. 아니면 그냥 3을 추가하고 사용자가 자동으로 다음 데이터를 스크롤해야합니까? – Musterknabe

+0

항목에 대한 목록보기로 작업합니까? – guikk

+0

RelativeLayout의 ScrollView에 LinearLayout이 있습니다. LinearLayout은 하나의 자식 만 가질 수 있기 때문에 ScrollView에서 LinearLayout을 사용합니다. 선형 레이아웃 대신 목록보기를 사용 하시겠습니까? – Musterknabe

관련 문제