android載入延遲載入
① Android view 載入伺服器數據延遲問題
Android客戶端中混搭HTML頁面,會出現雖然HTML內容載入完成,標題也正常顯示,但是整個網頁需要等到近5秒(甚至更多)時間才會顯示出來。研究了很久,搜遍了國外很多網站,也看過PhoneGap的代碼,一直無解。
一般人堆WebView的加速,都是建議先用webView.getSettings().setBlockNetworkImage(true); 將圖片下載阻塞,然後在瀏覽器的OnPageFinished事件中設置webView.getSettings().setBlockNetworkImage(false); 通過圖片的延遲載入,讓網頁能更快地顯示。
但是,通過實際的日誌發現,Android的OnPageFinished事件會在javascript腳本執行完成之後才會觸發。如果在頁面中使用JQuery,會在處理完DOM對象,執行完$(document).ready(function() {});事件自會後才會渲染並顯示頁面。
② android webview怎麼才可以讓js延遲載入
WebView不是有個方法控制Javascript是否啟用嗎?演示幾秒後將這個屬性設置為true也許可以。
③ android:如何實現點擊按鈕,彈出「正在載入數據,請稍候...」對話框,載入完了之後,對話框自動
實現過程其實很簡單。
第一步:自定義一個WaitingDialog,該Dialog支持自定義文本,一個可轉動的圖片,也可以增加一個定時關閉的介面,當然也可以選擇外部定時關閉。
第二步:在頁面調用。
如果我僅僅是這么回答,你可能覺得我在敷衍你,可是我為你的問題寫了一個DEMO,你可以直接去下載,在CSDN上,就不知道網路有沒有這么開放了,哈哈。
地址:http://download.csdn.net/download/yanjunhui2011/10019463
④ android怎樣加快ui的載入速度
1.減小主線程的阻塞時間
若一個操作耗時教長(超過5秒 用戶無響應5秒 網路和資料庫阻塞10秒 廣播接收者執行超過10秒會導致ANR),我們應該將其放入後台線程中執行,只在需要修改UI界面時通知主線程進行修改。
Android已經提供了AsynTask以實現從主線程生成新的非同步任務的方法。具體用法參見非同步任務。
2.提高Adapter和AdapterView的效率
(1)重用已生成過的Item View
(2) 添加ViewHolder
(3) 緩存Item的數據
(4)分段顯示
3.優化布局文件
如果我們的布局層次過多,那麼在我們用findViewById的時間必然會變多,一個變多可能不要緊,但是有很多調用必然會影響性能。
(1) 使用觀察布局的工具 Hierarchy Viewer
(2)使用布局優化工具: Layoutopt
(3)優化布局的層次結構
4.背景圖
某些時候,我們可能希望能夠盡可能多的提高Activity哪怕一點點的性能,這時候我們可以考慮優化Activity背景圖。
首先我們必須知道,在android的Activity中,不止有你使用的setContentView時使用的View,還包含一些其它的View。其根View是一個DecorView,你設置的View就包含在其中,id為content。
(1)使用getWindow().setBackgroundDrawable()
(2)自定義主題
創建文件res/vlaues/theme.xml
<resources>
<style name="Theme.CustomBackground" parent="android:Theme">
<item name="android:windowBackground">@null</item>
</style>
</resources>
可根據需要將windowBackground設置為null或你需要的背景圖
2.在<activity/>或者<application/>標簽中添加 android:theme="@style/Theme.CustomBackground"
5.使用ViewStub
ViewStub是一個看不見,輕量級的View。它沒有尺寸,也不會繪制以及以某種形式參與到布局中來。當只有調用Inflate之後其中的View才會被實例化,這意味著用ViewStub保留View層次結構代價是
(1) 延遲載入不常用的UI控制項
當某些控制項只在很少情況下才會使用,我們可以使用ViewStub來延遲載入,以提高UI載入速度及減小內存消耗。
[java] view plain
<span style="font-size:18px;">public class DelayLoadActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.delay_load);
Button btn = (Button) findViewById(android.R.id.button1);
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
v.setEnabled(false);
ViewStub stub = (ViewStub) findViewById(R.id.stub);
View inflated = stub.inflate();
}});
}
}
</span>
(2)提高改變布局的速度
需要使用的場景
界面需要頻繁切換
希望能提高切換速度
使用方法(以橫豎換屏為例)
1.設置Activity的android:configChanges屬性為keyboardHidden|orientation
2.為橫豎屏分別編寫不同的layout
3.創建一個layout,並包含兩個ViewStub(分別對應橫豎屏)
4.在橫豎屏,通過調用ViewStub.inflate創建當前View並將另外一個設為GONE
5.綁定並設置控制項的狀態
⑤ android webview 載入url有延遲怎麼辦,有沒有比wenview更好的第三方控制項
現在webView載入都會稍有延遲,另外要注意內核問題,在Android 4.4以下(不包含4.4)系統WebView底層實現是採用WebKit(http://www.webkit.org/)內核,而在Android 4.4及其以上Google 採用了chromium(http://www.chromium.org/)作為系統WebView的底層內核支持。參考Android 各個版本WebView,一般載入網頁都會有進度顯示,可以考慮增加進度顯示,另外可以集成第三方webview,現在推薦兩個,一個是騰訊X5,官方鏈接,另一個是Crosswalk,官方鏈接,使用時可以迴避掉版本兼容問題,但是會出現安裝包增大的問題。