編輯:關於Android編程
預先獲取數據
預先獲取數據是一種有效的減少大量的獨立的數據傳輸會話的方法。它允許基於一個連接,在給定的單一時間周期內,滿負荷的下載所有的需要的數據。
通過提前下載,可以減少大量的下載數據所需的無線活躍信號。這樣不僅可以保存電池電量,也可以改善延遲、降低所需的帶寬、減少下載時間。
在執行一個操作或浏覽數據之前,通過預下載所需的數據,可以減少應用程序因等待下載而造成應用延遲,從而改善用戶體驗。
但是,如果過分使用,會引發電池和帶寬消耗的增加,以及下載的數據過多(下載了不使用的數據)。確保應用程序不會因為等待預先獲取數據而造成應用程序啟動的延遲,也是很重要的。在實際的應用中,這意味著應用程序要逐步的處理數據,或者優先下載或處理應用程序啟動所需的數據。
如何預先獲取數據,依賴要下載的數據的大小和它們被使用的可能性。概要的指南是基於上述的狀態機,在當前的用戶會話中,要下載那些有50%機會被使用的數據,通常要預先獲取大於6秒鐘左右的數據(大約1~2M),以便讓下載的未使用的數據跟前面既存的數據相匹配。
一般來說你只需每隔2到5分鐘來啟動一次下載操作,並按順序下載1到5M的數據,這是一種好的預先獲取數據的實踐。
遵循這個原則,大數據的下載---如視頻文件,應該以數據塊的方式,定期(每隔2到5分鐘)的被下載,這樣就看可以預先獲取數據,以便能夠高效的觀看後續的圖像。
注意,預先下載應該跟批量傳輸和連接綁定,並且它會根據連接的類型和速度來變化。
以下是一些實踐的例子:
音樂播放器
你可以選擇預先獲取整個專輯,但是如果用戶聽完第一首歌曲之後就停止了,那麼就會浪費大量的帶寬和電池電量。
好的方法應該是,除了正在播放的歌曲之外,還要維持一首歌曲的緩存。對於流媒體音樂,不要在所有時間都保持無線信號的活躍狀態,以便維持連續的數據流,要考慮使用HTTP的實時流來傳輸音頻流,這樣就可以模擬上述的預先獲取數據的方法。
新聞閱讀器
很多新聞應用程序都通過選擇分類後,只下載頭條的方式來視圖減少帶寬的使用,只有在用戶想要閱讀時,才開始下載全文,並把閱讀的部分滾動到視圖中。
使用這種方法,為了用戶的大多數的閱讀會話,如翻閱頭條、改變分類、以及閱讀文章等,都要強制保持無線信號的活躍狀態。不僅如此,而且在固定能耗狀態之間切換時,也會導致切換分類或閱讀文章的明顯延遲。
一種較好的做法是,在啟動時預先獲取一定數量的可閱讀數據。以第一組新聞的頭條和摘要開始,在確保最低的啟動延時同時,還有包含剩余的頭條和摘要,以及主要頭條列表中的每篇文章的文本。
另一種做法是預先獲取每個頭條、摘要、文章文本,以及全部的文章相關的圖片---通常是在後台按照預定的計劃來預先下載。這種方法的風險在於,會明顯的消耗帶寬和電池電量,並且有可能會下載一些用戶從不使用的內容,因此要小心使用。
一種解決方案是只在Wi-Fi鏈接時才進行完整數據的下載,並盡可能的在設備充電時執行。在基於連接類型修改下載方案中會詳細討論。
今天練手一下,一起來畫個太極圖吧~最終效果如下:最終效果一般都是先講原理,我就反其道而行,先講實現吧。1.繼承實現初始化方法繼承View,實現基本的構造函數:public
在Android上查看圖片或者浏覽網頁時,我們往往有把圖片或者網頁放大或者縮小的的需求,這樣就能夠獲得更多的細節信息 或者獲得更多的全貌信息,多點觸摸與綻放功能正是滿足這
JPush嵌入工程官網詳解自定義通知欄先自定義Receiver
先上一張效果圖吧:說說這個東西的來源吧,今天突然想到笛卡爾心形圖,想去看看能不能畫個心出來,但是看到一篇不錯的文章,那篇文章羅列了很多關於心形的函數方程,這可把我高興壞了