當前位置:首頁 » 安卓系統 » android延遲載入

android延遲載入

發布時間: 2022-08-07 00:27:01

⑴ android webview載入網頁很慢,而瀏覽器很快

Android客戶端中混搭HTML頁面,會出現雖然HTML內容載入完成,標題也正常顯示,但是整個網頁需要等到近5秒(甚至更多)時間才會顯示出來。研究了很久,搜遍了國外很多網站,也看過PhoneGap的代碼,一直無解。

一般人堆WebView的加速,都是建議先用webView.getSettings().setBlockNetworkImage(true); 將圖片下載阻塞,然後在瀏覽器的OnPageFinished事件中設置webView.getSettings().setBlockNetworkImage(false); 通過圖片的延遲載入,讓網頁能更快地顯示。

但是,通過實際的日誌發現,Android的OnPageFinished事件會在javascript腳本執行完成之後才會觸發。如果在頁面中使用JQuery,會在處理完DOM對象,執行完$(document).ready(function() {});事件自會後才會渲染並顯示頁面。如下圖

詳細代碼

⑵ 玩安卓游戲延遲嚴重應該怎麼辦誰有好方法推薦一下!

手機玩游戲延遲大,你可以試試更換網路再去玩游戲,一般現在連接無線網路都很快的,如果手機很卡運行內存不夠也是會導致游戲載入緩慢,建議玩游戲選擇配置稍微高一些的手機。體驗會更好的。

⑶ 如何優化 android 系統應用的啟動速度

一、應用的啟動

啟動方式

通常來說,在安卓中應用的啟動方式分為兩種:冷啟動和熱啟動。

  • 1、冷啟動:當啟動應用時,後台沒有該應用的進程,這時系統會重新創建一個新的進程分配給該應用,這個啟動方式就是冷啟動。

  • 2、熱啟動:當啟動應用時,後台已有該應用的進程(例:按back鍵、home鍵,應用雖然會退出,但是該應用的進程是依然會保留在後台,可進入任務列表查看),所以在已有進程的情況下,這種啟動會從已有的進程中來啟動應用,這個方式叫熱啟動。

  • 特點

    1、冷啟動:冷啟動因為系統會重新創建一個新的進程分配給它,所以會先創建和初始化Application類,再創建和初始化MainActivity類(包括一系列的測量、布局、繪制),最後顯示在界面上。

    2、熱啟動:熱啟動因為會從已有的進程中來啟動,所以熱啟動就不會走Application這步了,而是直接走MainActivity(包括一系列的測量、布局、繪制),所以熱啟動的過程只需要創建和初始化一個MainActivity就行了,而不必創建和初始化Application,因為一個應用從新進程的創建到進程的銷毀,Application只會初始化一次。

    上面說的啟動是點擊app的啟動圖標來啟動的,而另外一種方式是進入最近使用的列表界面來啟動應用,這種不應該叫啟動,應該叫恢復。

    二、應用啟動的流程

    安卓系統上,應用在沒有進程的情況下,應用的啟動都是這樣一個流程:當點擊app的啟動圖標時,安卓系統會從Zygote進程中fork創建出一個新的進程分配給該應用,之後會依次創建和初始化Application類、創建MainActivity類、載入主題樣式Theme中的windowBackground等屬性設置給MainActivity以及配置Activity層級上的一些屬性、再inflate布局、當onCreate/onStart/onResume方法都走完了後最後才進行contentView的measure/layout/draw顯示在界面上,所以直到這里,應用的第一次啟動才算完成,這時候我們看到的界面也就是所說的第一幀。

    所以,總結一下,應用的啟動流程如下:

    Application的構造器方法——>attachBaseContext()——>onCreate()——>Activity的構造方法——>onCreate()——>配置主題中背景等屬性——>onStart()——>onResume()——>測量布局繪制顯示在界面上。

    三、測量應用啟動的時間

    在上面這個啟動流程中,任何一個地方有耗時操作都會拖慢我們應用的啟動速度,而應用啟動時間是用毫秒度量的,對於毫秒級別的快慢度量我們還是需要去精確的測量到到底應用啟動花了多少時間,而根據這個時間來做衡量。

    什麼才是應用的啟動時間

    從點擊應用的啟動圖標開始創建出一個新的進程直到我們看到了界面的第一幀,這段時間就是應用的啟動時間。

    我們要測量的也就是這段時間,測量這段時間可以通過adb shell命令的方式進行測量,這種方法測量的最為精確,命令為:

  • adb shell am start -W [packageName]/[packageName.MainActivity]

  • 執行成功後將返回三個測量到的時間:
    1、ThisTime:一般和TotalTime時間一樣,除非在應用啟動時開了一個透明的Activity預先處理一些事再顯示出主Activity,這樣將比TotalTime小。
    2、TotalTime:應用的啟動時間,包括創建進程+Application初始化+Activity初始化到界面顯示。
    3、WaitTime:一般比TotalTime大點,包括系統影響的耗時。

    下面是測量一個應用冷啟動和熱啟動的時間:
    冷啟動:

    熱啟動:

    以上就是本文的全部內容,希望對大家學習Android軟體編程有所幫助。

⑷ 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載入https頁面速度很慢,是什麼原因

要解決這個問題,就是想辦法讓瀏覽器延遲載入JS腳本,但是Android的WebView控制項沒有這樣的參數。無法單獨阻塞JS腳本,另外有個setBlockNetworkLoads,用了之後也無法實現類似圖片的非同步載入的功能,頁面成了光板,連CSS也阻塞了。

就是這個問題困擾了很久,直到在做HTML照片牆時,由於setBlockNetworkImage在OnPageFinished之後才會釋放,導致在JS腳本載入圖片過程中無法獲取圖片的高寬信息,最後巧妙地通過$(document).ready(function() {setTimeout(func,10)});,成功將函數在onPageFinished之後運行。那麼延伸來想,是否可以將JS腳本也用同樣的方式延遲載入呢?

答案是肯定的,在http://wonko。com/post/painless_javascript_lazy_loading_with_lazyload可以找到JS腳本延遲載入的第三方組件。

⑹ android webview怎麼才可以讓js延遲載入

WebView不是有個方法控制Javascript是否啟用嗎?演示幾秒後將這個屬性設置為true也許可以。

⑺ 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 載入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,官方鏈接,使用時可以迴避掉版本兼容問題,但是會出現安裝包增大的問題。

⑼ android延時載入的幾種做法

在項目開發中,經常需要通過延時載入來實現滿足我們的項目要求。那到底怎樣來實現延時,下面結合java與android的相關方法來實現延時問題。
一.利用線程的Sleep方法
二. 利用Timer和TimerTask延時器
三.利用android自帶的Handler消息處理
四.SchleExecutorService介面處理延時 迭代

熱點內容
怎麼撤銷excel密碼 發布:2022-08-10 21:22:03 瀏覽:874
傳奇區域網伺服器搭建 發布:2022-08-10 21:19:36 瀏覽:334
mac文件夾亂碼 發布:2022-08-10 21:17:51 瀏覽:339
升級源碼 發布:2022-08-10 21:16:22 瀏覽:793
ug數控編程教程視頻 發布:2022-08-10 21:03:04 瀏覽:435
伺服器怎麼有公網ip 發布:2022-08-10 21:01:12 瀏覽:249
伺服器中毒如何查殺 發布:2022-08-10 20:58:27 瀏覽:446
java中寫入文件 發布:2022-08-10 20:58:20 瀏覽:298
電腦dns伺服器忘了怎麼辦 發布:2022-08-10 20:57:18 瀏覽:732
車用滅火器怎麼配置 發布:2022-08-10 20:57:09 瀏覽:270