0

ViewPager 및 일부 파편이 포함 된 활동이 있습니다.활동 시작 시간 개선 (AsyncTask?)

문제 : 그것은 ViewPager가 onResume 메도에서 만들어지기 때문에 활동을 시작하는 연령이 걸립니다. 데이터베이스 요청으로 인해 2-3 초.

은 내가 onResume에서 AsyncTask를 시작하고 거기에 무거운 작업을 수행 할 수 있습니다 생각했다. 그러나 활동을 시작하는 시간은 줄어들지 않습니다. 내가보기에 버튼을 배치하고 할 경우

는 온 클릭 모두의 작업은 잘 작동합니다. 활동이 정말 빨리 시작하고 클릭 후 무거운 작업이 시작됩니다. 작업이 활동의 ​​시작 시간이 향상되지 않습니다 onResume

@Override 
    protected void onResume() { 
     super.onResume(); 

     LoadTask task = new LoadTask(); 
     task.execute(); 
    } 

이 솔루션이라고

AsyncTask를 구현

private class LoadTask extends AsyncTask<Void, Integer, Boolean>{ 

     @Override 
     protected Boolean doInBackground(Void... params) { 
      PageAdapter mPageAdapter = new PageAdapter(
        getSupportFragmentManager(), mFragments); 
      mViewPager.setAdapter(mPageAdapter); 

      return true; 
     } 

    } 

: 약

일부 코드 생각합니다.

활동을 시작하는 방법이 있나요 및 (진행 막대 ...)가 무거운 작업을하고 모든 것을 팽창하고 표시 한 후

?

답변

0

비어있는보기 호출기를 설정하고 활동을 만들 때 어댑터에 연결해야합니다. 그런 다음 비동기 작업에서 어댑터를 백업하는 모든 컬렉션에 내용을 채우고 데이터 집합이 변경되었음을 뷰에 알립니다. 뷰가 생성 될 때까지 뷰를 표시 할 수 없으며 어댑터를 비동기 태스크로 이동하여 차이를 느끼지 않게됩니다. 목표는 앱을 시작할 때 앱에서 몇 가지보기를 표시하고 데이터가 사용 가능해지면 데이터를 채우는 것입니다 (아마 알고있는 것처럼).

+0

처음에는 ViewPager가 비어 있습니다. XML로 작성됩니다. 그러나 나는 그것을 볼 수 없다. ViewPager는 PageAdapter를 컨텐츠로 설정하여 컨텐츠로 채워진다. 그리고 asynctask에서 asyncronysly가 발생합니다. 그러나 asynctask가 끝난 후에 전체 활동이 표시됩니다. asyncTask가 일을하는 동안 Activity가 그려지지 않은 이유는 분명하지 않습니다. – passsy

+0

비동기 작업을 모두 주석으로 처리하면 예상대로 (빠르게로드 됨) 호출기에서 합법적 인 데이터가 채워지는 것만 큼 작동합니다. 코드가 좀 더 필요할 수 있습니다. 또한로드하려는 데이터의 양과 테스트 할 시스템의 사양은 무엇입니까? – dcow