2014-02-20 3 views
0

사용자가 탭을 전환 할 때 전환되는 하나의 주 활동 및 7 개 조각이있는 상대적으로 간단한 Android 앱을 개발하고 있습니다. 탭 중 하나는 단편 내에 트위터 페이지를로드하는 WebView입니다. URL을로드해야하기 때문에 3-4 초 정도 걸리므로 사용자가이 탭을로드하고 스위치 아웃 한 다음 다시 돌아올 때마다 해당 작업을 수행하도록하고 싶지는 않습니다. 지금. 이상적으로, 사용자가 처음으로 페이지를로드 한 후 필요할 때까지 페이지가 다시로드되지 않도록하고 싶습니다.조각을 전환 할 때 조각 상태 저장

다음은 webView 조각의 코드입니다.

public class TwitterFragment extends Fragment { 

    WebView webView; 
    private static final String URL = "https://twitter.com/"; 

    public TwitterFragment() {}; 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 

     View rootView = inflater.inflate(R.layout.fragment_twitter, container, false); 
     webView = (WebView) rootView.findViewById(R.id.webView); 
     webView.getSettings().setJavaScriptEnabled(true); 
     webView.setWebViewClient(new WebViewClient()); 
     webView.loadUrl(URL); 


     return rootView; 
    } 

    @Override 
    public void onResume() { 
     super.onResume(); 
    } 

this SO link에 따르면, 당신은 URL이 매번로드 할 조각이 재개되는 것을 의미하는, 매번 호출되는 onCreateView 중지 할 수 없습니다.

언제든지이 불필요한 URL 로딩을 피하는 방법을 아는 사람이 있습니까?

+0

와 ViewPager를 사용하는 것입니다. – keshav

답변

0

조각을 ViewPager 안에 넣으면 setOffscreenPageLimit이라는 방법을 사용하여 오프 스크린 조각의 상태를 유지할 수 있습니다.

지저귐 데이터를 어딘가에 저장해야하는 경우 json을 앱 데이터 파일에 직접 쓸 수 있습니다. 예를 들어 타임 스탬프와 함께 공유 메모리에이 파일 경로를 저장할 수 있습니다. 타임 스탬프가 너무 오래되면 새 데이터를 검색합니다. 설정이 변경되는 동안 장치 화면을 회전시킬 때 필요합니다. Android는 Fragment.onSaveInstanceState를 호출합니다. 이 파일을 저장하면 모든 문제가 해결 될 것입니다.

[편집] 죄송합니다. 이제 webview에서 URL을로드하는 중입니다. 직접 다운로드하지 않는 것이 좋습니다.

[EDIT2]이 SO 당신에 비슷한 문제를 제시하는 것 : WebView reloading when Fragment in ViewPager is retained form BackStack이 솔루션은 유는 다시 시작하고자 할 때(), 어떤 조건을 넣어 그리고 onResume를 사용하지 않는 setOffscreenPageLimit

관련 문제