編輯:關於Android編程
以下是個人拙見,大神可直接忽略。
直接奔入主題,android的一個webview控件相信大家都特別熟悉了,可以用來加載顯示網頁,像商城的商品圖文詳情就可以用網頁很快實現,但是最近項目中遇到不一樣的問題,商品首頁用webview顯示,點擊某一個商品或者商品分類startactivity跳轉自身的界面,首頁混雜一部分網頁加載肯定會遇到界面顯示卡頓,顯示慢的問題,不過既然需求是這樣,也只能照做了。
顯示一個網頁就不說了,首先,先優化一下顯示速度問題,也就是顯示文字和圖片的先後,在oncreate方法加上下面代碼:
if (Build.VERSION.SDK_INT >= 19) { mWebView.getSettings().setLoadsImagesAutomatically(true); } else { mWebView.getSettings().setLoadsImagesAutomatically(false); }
在WebViewClient中的onPageFinished方法加入:
if (!mWebView.getSettings().getLoadsImagesAutomatically()) { mWebView.getSettings().setLoadsImagesAutomatically(true); }
由於可能導致網頁顯示錯誤,如果想自定義,在onReceivedError方法中加載自己在本地寫的html.
其次就是要實現startActivity點擊跳轉android界面了,下面兩句話極其重要:
mWebView.getSettings().setJavaScriptEnabled(true); mWebView.addJavascriptInterface(new WebAppInterface( MyWebShopActivity.this), "startActivity");
讓你的webview支持頁面js交互,其中"startActivity" 可以更改,和網頁js方法保持一致就行了,然後寫入你要點擊實現的效果了,要顯示一句話,或者跳轉界面等...
public class WebAppInterface { Context mContext; WebAppInterface(Context c) { mContext = c; } @JavascriptInterface public void jump_product_detail(final String id) { //TODO 處理代碼 } }
我這裡就是下的跳轉點擊的商品,"jump_product_detail"和上面的"startActivity"一樣可以更改,也要保持一致。
最後,在你自定義處理代碼中說一下可能遇到的問題,前端在做網頁的時候會加上每一個點擊的id,也就是標識,比如你加載時url是"https://www.baidu.com/" ,點擊後會變為"https://www.baidu.com/:01" 這樣多了id的url,可是這時webview會加載一次這個url,但是這個url是不存在的,所以我們就要重新加載一次原來的URL,注意這裡不能用mWebView.loadUrl(url)來加載了,看下面的log輸出就知道了:
java.lang.Throwable: Warning: A WebView method was called on thread 'WebViewCoreThread'. All WebView methods must be called on the UI thread. Future versions of WebView may not support use on other threads.
處理方法就是改為:
mWebView.post(new Runnable() { @Override public void run() { mWebView.loadUrl(url); //url為初始的值 } });
代替mWebView.loadUrl(url)來加載。
同樣,在你用startActivity啟動界面時會出現錯誤Uncaught Error: Error calling method on NPObject,只需要修改為:
Handler mHandler = new Handler(); mHandler.post(new Runnable() { @Override public void run() { startActivity(new Intent(action, uri)); });
就能較好的解決以上兩個容易出現的問題了。
ok, 先這樣,還有什麼問題想知道的可以在下方評論。
Recovery的作用 Android利用Recovery模式,進行恢復出廠設置,全量包OTA升級,增量包升級。 升級一般通過運行升級包中的META-INF/com/go
生成apk最懶惰的方法是:只要你運行過android項目,到工作目錄的bin文件夾下就能找到與項目同名的apk文件,這種apk默認是已經使用debug用戶簽名的。如果想要
相信所有的用戶都遇到過軟件提醒更新的情況,下面就將實現此功能首先看一下程序目錄結構 步驟:1、新建一個類UpdateManger,用於顯示提示更新復
Android的內存優化是性能優化中很重要的一部分,而避免OOM又是內存優化中比較核心的一點,這是一篇關於內存優化中如何避免OOM的總結性概要文章,內容大多都是和OOM有