å¨åæ··ååºç¨çæ¶åï¼æå 个çç¹ï¼ä¸ä¸ªæ¯æ ç½ç»æ æ³ä½¿ç¨ï¼è¿æä¸ä¸ªæ¯åç½ç»ç¯å¢å½±åçç½é¡µå è½½é度ãä»å¤©å°±è¿ä¸¤ä¸ªé®é¢ï¼å大家交æµä¸ä¸èªå·±çç»éªã
离线ç¼å
è¿ä¸ªæ¯è¾å®¹æï¼å¼å¯webViewçç¼ååè½å°±å¯ä»¥äºã
WebSettings settings = webView.getSettings();
settings.setAppCacheEnabled(true);
settings.setDatabaseEnabled(true);
settings.setDomStorageEnabled(true);//å¼å¯DOMç¼åï¼å
³éçè¯H5èªèº«çä¸äºæä½æ¯æ æçsettings.setCacheMode(WebSettings.LOAD_DEFAULT);
è¿è¾¹æ们éè¿setCacheModeæ¹æ³æ¥è®¾ç½®WebViewçç¼åçç¥ï¼WebSettings.LOAD_DEFAULTæ¯é»è®¤çç¼åçç¥ï¼å®å¨ç¼åå¯è·å并ä¸æ²¡æè¿æçæ
åµä¸å è½½ç¼åï¼å¦åéè¿ç½ç»è·åèµæºãè¿æ ·çè¯å¯ä»¥åå°é¡µé¢çç½ç»è¯·æ±æ¬¡æ°ï¼é£æ们å¦ä½å¨ç¦»çº¿çæ
åµä¸ä¹è½æå¼é¡µé¢å¢ï¼è¿éæ们å¨å 载页é¢çæ¶åå¯ä»¥éè¿å¤æç½ç»ç¶æï¼å¨æ ç½ç»çæ
åµä¸æ´æ¹webviewçç¼åçç¥ã
ConnectivityManager cm = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo info = cm.getActiveNetworkInfo();if(info.isAvailable())
{
settings.setCacheMode(WebSettings.LOAD_DEFAULT);
}else {
settings.setCacheMode(WebSettings.LOAD_CACHE_ONLY);//ä¸ä½¿ç¨ç½ç»ï¼åªå è½½ç¼å}
è¿æ ·æ们就å¯ä»¥ä½¿æ们çæ··ååºç¨å¨æ²¡æç½ç»çæ
åµä¸ä¹è½ä½¿ç¨ä¸é¨åçåè½ï¼ä¸è³äºä»ä¹é½æ¾ç¤ºä¸äºäºï¼å½ç¶å¦ææ们å°ç¼ååçæ´å¥½ä¸äºï¼å¨ç½ç»å¥½çæ¶åï¼æ¯å¦è¯´å¨WIFIç¶æä¸ï¼å»åå°å è½½ä¸äºç½é¡µç¼åèµ·æ¥ï¼è¿æ ·å¤ççè¯ï¼å³ä½¿å¨æ ç½ç»æ
åµä¸ç¬¬ä¸æ¬¡æå¼æäºé¡µé¢çæ¶åï¼ä¹è½å°è¯¥é¡µé¢æ¾ç¤ºåºæ¥ã
å½ç¶ç¼åèµæºåéä¹ä¼å¸¦æ¥ä¸ä¸ªé®é¢ï¼é£å°±æ¯èµæºæ æ³åæ¶æ´æ°ï¼WebSettings.LOAD_DEFAULTä¸ç页é¢ä¸çç¼åçæ¬å¥½åä¸æ¯å¾èµ·ä½ç¨ï¼æ以æ们è¿è¾¹å¯è½éè¦èªå·±åä¸ä¸ªç¼åçæ¬æ§å¶ãè¿ä¸ªç¼åçæ¬æ§å¶å¯ä»¥æ¾å¨APPçæ¬æ´æ°ä¸ã
if (upgrade.cacheControl > cacheControl)
{
webView.clearCache(true);//å é¤DOMç¼å
VersionUtils.clearCache(mContext.getCacheDir());//å é¤APPç¼å
try
{
mContext.deleteDatabase("webview.db");//å é¤æ°æ®åºç¼å
mContext.deleteDatabase("webviewCache.db");
} catch (Exception e)
{
}
}
é¢å è½½
ææ¶åä¸ä¸ªé¡µé¢èµæºæ¯è¾å¤ï¼å¾çï¼CSSï¼jsæ¯è¾å¤ï¼è¿å¼ç¨äºJQueryè¿ç§åºç¶å·¨å
½ï¼ä»å è½½å°é¡µé¢æ¸²æå®æéè¦æ¯è¾é¿çæ¶é´ï¼æä¸ä¸ªè§£å³æ¹æ¡æ¯å°è¿äºèµæºæå
è¿APKéé¢ï¼ç¶åå½é¡µé¢å è½½è¿äºèµæºçæ¶å让å®ä»æ¬å°è·åï¼è¿æ ·å¯ä»¥æåå è½½é度ä¹è½åå°æå¡å¨ååãéåWebClientç±»ä¸çshouldInterceptRequestæ¹æ³ï¼åå°è¿ä¸ªç±»è®¾ç½®ç»WebViewã
webView.setWebViewClient(new WebViewClient()
{ @Override
public WebResourceResponse shouldInterceptRequest(WebView view, String url)
{ if (url.contains("[tag]"))
{
String localPath = url.replaceFirst("^http.*[tag]\\]", ""); try
{
InputStream is = getApplicationContext().getAssets().open(localPath);
Log.d(TAG, "shouldInterceptRequest: localPath " + localPath);
String mimeType = "text/javascript"; if (localPath.endsWith("css"))
{
mimeType = "text/css";
} return new WebResourceResponse(mimeType, "UTF-8", is);
} catch (Exception e)
{
e.printStackTrace(); return null;
}
} else
{ return null;
}
}
});
è¿éæ们é页é¢ä¸å¸¦æç¹æ®æ è®°ç请æ±è¿è¡è¿æ»¤æ¿æ¢ï¼ä¹å°±æ¯ä¸é¢ä»£ç ä¸ç[tag]ï¼è¿ä¸ªå¯ä»¥è·ååå°å¼åçåäºçº¦å®å¥½æ¥å°±è¡äºã对å¾çèµæºæè
å
¶ä»èµæºè¿è¡æ¿æ¢ä¹æ¯å¯ä»¥çãè¡¥å
ä¸ä¸ªå°ç¹å¯ä»¥éè¿settings.setLoadsImagesAutomatically(true);æ¥è®¾ç½®å¨é¡µé¢è£
è½½å®æä¹ååå»å è½½å¾çã
H5ä¼å
AndroidçOnPageFinishedäºä»¶ä¼å¨Javascriptèæ¬æ§è¡å®æä¹åæä¼è§¦åãå¦æå¨é¡µé¢ä¸ä½¿ ç¨JQueryï¼ä¼å¨å¤çå®DOM对象ï¼æ§è¡å®$(document).ready(function() {});äºä»¶èªä¼åæä¼æ¸²æ并æ¾ç¤ºé¡µé¢ãèåæ ·ç页é¢å¨iPhoneä¸å´æ¯è½½å
¥ç¸å½çå¿«ï¼å 为iPhoneæ¯æ¾ç¤ºå®é¡µé¢æä¼è§¦åèæ¬çæ§è¡ãæ以æ们è¿è¾¹ç解å³æ¹æ¡å»¶è¿JSèæ¬çè½½å
¥ï¼è¿ä¸ªæ¹é¢çé®é¢æ¯éè¦Webå端工ç¨å¸å¸®å¿ä¼åçï¼ç½ä¸åºè¯¥ææ¯è¾å¤LazyLoadæ件ï¼è¿éæ¾ä¸ä¸ªæ¯è¾èçé¾æ¥Painless JavaScript lazy loading with LazyLoad,åæ ·ä¹æ¾ä¸ä¸å°æ®µå端代ç ï¼ä»
ä¾åèã
<script src="/css/j/lazyload-min.js" type="text/javascript"></script><script type="text/javascript" charset="utf-8">
loadComplete() { //instead of document.read();
}
function loadscript() {
LazyLoad.loadOnce([ '/css/j/jquery-1.6.2.min.js', '/css/j/flow/jquery.flow.1.1.min.js', '/css/j/min.js?v=2011100852'
], loadComplete);
}
setTimeout(loadscript,10);</script>
温馨提示:答案为网友推荐,仅供参考