黄色网页视频 I 影音先锋日日狠狠久久 I 秋霞午夜毛片 I 秋霞一二三区 I 国产成人片无码视频 I 国产 精品 自在自线 I av免费观看网站 I 日本精品久久久久中文字幕5 I 91看视频 I 看全色黄大色黄女片18 I 精品不卡一区 I 亚洲最新精品 I 欧美 激情 在线 I 人妻少妇精品久久 I 国产99视频精品免费专区 I 欧美影院 I 欧美精品在欧美一区二区少妇 I av大片网站 I 国产精品黄色片 I 888久久 I 狠狠干最新 I 看看黄色一级片 I 黄色精品久久 I 三级av在线 I 69色综合 I 国产日韩欧美91 I 亚洲精品偷拍 I 激情小说亚洲图片 I 久久国产视频精品 I 国产综合精品一区二区三区 I 色婷婷国产 I 最新成人av在线 I 国产私拍精品 I 日韩成人影音 I 日日夜夜天天综合

【Android Developers Training】 85. 不要有冗

系統(tǒng) 2317 0

注:本文翻譯自Google官方的Android Developers Training文檔,譯者技術(shù)一般,由于喜愛(ài)安卓而產(chǎn)生了翻譯的念頭,純屬個(gè)人興趣愛(ài)好。

原文鏈接: http://developer.android.com/training/efficient-downloads/redundant_redundant.html


最基本的減少你的下載數(shù)量的方法就是只下載你需要的數(shù)據(jù)。就數(shù)據(jù)而言,這就意味著實(shí)現(xiàn)REST APIs(譯者注:REST即Representational State Transfer,意為表述性轉(zhuǎn)移狀態(tài),在Web服務(wù)中,經(jīng)常能看到基于RESTful的設(shè)計(jì)風(fēng)格),它可以允許你使用一些參數(shù)如:上一次更新的時(shí)間,來(lái)指定限制返回?cái)?shù)據(jù)的查詢條件。

類(lèi)似的,當(dāng)下載圖片時(shí),減少服務(wù)端的圖片尺寸,而不是在客戶端把完整圖片全下載下來(lái)再調(diào)整尺寸,也是一個(gè)好的習(xí)慣。


一). 在本地緩存文件

另一個(gè)重要的技術(shù)是避免下載重復(fù)數(shù)據(jù)。你可以使用緩存來(lái)實(shí)現(xiàn)。總是緩存靜態(tài)資源,如包括一些點(diǎn)播類(lèi)的下載如完整尺寸的圖片(如果條件允許的話)。這類(lèi)資源應(yīng)該獨(dú)立地存儲(chǔ)起來(lái),來(lái)保證你能定期的清空你的資源緩存從而能夠控制它的大小。

要保證你的緩存不會(huì)導(dǎo)致你的應(yīng)用顯示的是陳舊的無(wú)用信息,應(yīng)該從HTTP響應(yīng)頭中,提取出這個(gè)請(qǐng)求內(nèi)容上一次更新的時(shí)間,以及它什么時(shí)候會(huì)過(guò)期。這可以讓你確定什么時(shí)候相關(guān)的內(nèi)容要被刷新。

      
        long
      
       currentTime =
      
         System.currentTimeMillis());



HttpURLConnection conn 
      
      =
      
         (HttpURLConnection) url.openConnection();




      
      
        long
      
       expires = conn.getHeaderFieldDate("Expires"
      
        , currentTime);


      
      
        long
      
       lastModified = conn.getHeaderFieldDate("Last-Modified"
      
        , currentTime);



setDataExpirationDate(expires);




      
      
        if
      
       (lastModified <
      
         lastUpdateTime) {

  
      
      
        //
      
      
         Skip update
      
      

} 
      
        else
      
      
         {

  
      
      
        //
      
      
         Parse update
      
      

}
    

使用這一方法,你可以有效地緩存動(dòng)態(tài)數(shù)據(jù),而又不會(huì)導(dǎo)致你的應(yīng)用使用的數(shù)據(jù)是陳舊的。

另外,你可以將不敏感的數(shù)據(jù)緩存在不被管理的外部緩存目錄中:

      Context.getExternalCacheDir();
    

另外,你也可以使用管理的/安全的應(yīng)用緩存。但是要注意當(dāng)系統(tǒng)的存儲(chǔ)資源不夠時(shí),這一內(nèi)部緩存會(huì)被自動(dòng)清空。

      Context.getCache();
    

當(dāng)應(yīng)用被卸載時(shí),不管文件存儲(chǔ)于哪一種類(lèi)型的緩存,都會(huì)被清除。


二). 使用HttpURLConnection響應(yīng)緩存

Android 4.0在“ HttpURLConnection ”中添加了一個(gè)響應(yīng)緩存。你可以在支持的設(shè)備上使用JAVA反射(如下所示)來(lái)啟用HTTP響應(yīng)緩存: ?

      
        private
      
      
        void
      
      
         enableHttpResponseCache() {

  
      
      
        try
      
      
         {

    
      
      
        long
      
       httpCacheSize = 10 * 1024 * 1024; 
      
        //
      
      
         10 MiB
      
      

    File httpCacheDir = 
      
        new
      
       File(getCacheDir(), "http"
      
        );

    Class.forName(
      
      "android.net.http.HttpResponseCache"
      
        )

         .getMethod(
      
      "install", File.
      
        class
      
      , 
      
        long
      
      .
      
        class
      
      
        )

         .invoke(
      
      
        null
      
      
        , httpCacheDir, httpCacheSize);

  } 
      
      
        catch
      
      
         (Exception httpResponseCacheNotAvailable) {

    Log.d(TAG, 
      
      "HTTP response cache is unavailable."
      
        );

  }

}
      
    

這一樣例代碼會(huì)在Android 4.0+的設(shè)備上啟用響應(yīng)緩存,而不會(huì)影響到早期版本的系統(tǒng)。

在使用了該緩存后,被完整緩存的的HTTP請(qǐng)求可以直接被本地存儲(chǔ)所響應(yīng),從而不需要再打開(kāi)一個(gè)新的網(wǎng)絡(luò)連接。另外緩存可以定期通過(guò)向服務(wù)器詢問(wèn)自己的實(shí)時(shí)性,這樣就可以避免了一部分由于下載數(shù)據(jù)導(dǎo)致的帶寬損耗。

沒(méi)有被緩存的響應(yīng)會(huì)被存儲(chǔ)于響應(yīng)緩存中以備將來(lái)可以用來(lái)響應(yīng)相關(guān)的請(qǐng)求。

【Android Developers Training】 85. 不要有冗余的下載


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論