我有一个教程应用程序,它加载教程页面列表[它们是网页]。这些页面占据全屏,为菜单栏留下大约 100dp。虽然不能按原样分享源代码,但下面是教程活动的伪代码。
HashMap<Integer, customWebView > mapPage;
onCreate(){
updateScreen();
}
updateScreen(){
Instantiate CustomScrollView(Customized HorizontalScrollView);
Instantiate scrollViewChildHolder (LinearLayout with horizontal orientation);
Instantiate mapPage;
for index : total page size{
Instantiate pageHolder(RelativeLayout);
Instantiate customWebView (Custom WebView);//Takes orientation as one of argument
Set html page url;//customWebView has a method loadWebPage() which loads this url.
Add customWebView to pageHoler;
mapPage.put(index, customWebView);
Add pageHolder to scrollViewChildHolder;
}
//pageNo which will be safely fetched from saved state. So it will be 1 on first start
//and on orientation change retains current reading page.
onPageChange(pageNo);
}
//Custom callback on page swipe by user
@Override
onPageChange(int pageNo){
//Custom method which loads html page from url which was set in updateScreen()
mapPage.get(pageNo).loadWebPage();
//unloadNeighbouring pages
//Will pick pageNo+2 & pageNo-2 pages and clears their content.
unloadNeighbouringPagesTo(pageNo);
}
PS:
我必须在 WebView 上添加一些按钮,因此我们使用 RelativeLayout 作为页面包装器。
我不能选择适配器[PagerAdapter for ViewPager],因为它会导致 webview 在加载时突然闪烁其内容,这是我们负担不起的。所以 CustomHorizontalSrollView 对我们来说是必须的。
我将在滚动视图中添加大约 150 多个页面。
对于横向和纵向模式,我分别有不同的页面。因此我需要重新创建方向变化。每个屏幕方向的视图大小也不同。
我没有覆盖 onConfigurationChanged(..)。即在方向改变时,活动生命周期从新鲜开始。
问题:
更改方向时,加载页面内容需要 2-3 秒。此外,应用程序似乎很晚才检测到方向变化。
请建议我如何提高方向更改时快速加载的性能。