<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                > 編寫:[kesenhoo](https://github.com/kesenhoo) - 原文:[http://developer.android.com/training/efficient-downloads/redundant-redundant.html](http://developer.android.com/training/efficient-downloads/redundant-redundant.html) 減少下載的最基本方法是僅僅下載那些你需要的。從數據的角度看,我們可以通過傳遞類似上次更新時間這樣的參數來制定查詢數據的條件。同樣,在下載圖片的時候,server那邊最好能夠減少圖片的大小,而不是讓我們下載完整大小的圖片。 ### 1)Cache Files Locally 避免下載重復的數據是很重要的。可以使用緩存機制來處理這個問題。緩存static的資源,例如完整的圖片。這些緩存的資源需要分開存放。為了保證app不會因為緩存而導致顯示的是舊數據,請在緩存中獲取數據的同時檢測其是否過期,當數據過期的時候,會提示進行刷新。 ~~~ 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 } ~~~ 使用這種方法,可以有效保證緩存里面一直是最新的數據。 可以使用下面的方法來獲取External緩存的目錄:(目錄會是sdcard下面的`Android/data/data/com.xxx.xxx/cache`) ~~~ Context.getExternalCacheDir(); ~~~ 下面是獲取內部緩存的方法,請注意,存放在內存中的數據有可能因內部空間不夠而被清除。(類似:`system/data/data/com.xxx.xxx./cache`) ~~~ Context.getCache(); ~~~ 上面兩個Cache的文件都會在app卸載的時候被清除。 **Ps:請注意這點:發現很多應用總是隨便在sdcard下面創建一個目錄用來存放緩存,可是這些緩存又不會隨著程序的卸載而被刪除,這其實是不符合規范,程序都被卸載了,為何還要留那么多垃圾文件,而且這些文件有可能會泄漏一些隱私信息。除非你的程序是音樂下載,拍照程序等等,這些確定程序生成的文件是會被用戶需要留下的,不然都應該使用上面的那種方式來獲取Cache目錄** ### 2)Use the HttpURLConnection Response Cache 在`Android 4.0`里面為HttpURLConnection增加了一個response cache(這是一個很好的減少http請求次數的機制,Android官方推薦使用HttpURLConnection而不是Apache的DefaultHttpClient,就是因為前者不僅僅有針對android做http請求的優化,還在4.0上增加了Reponse Cache,這進一步提高了效率) 我們可以使用反射機制開啟HTTP response cache,看下面的例子: ~~~ 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."); } } ~~~ 上面的sample code會在Android 4.0以上的設備上開啟response cache,同時不會影響到之前的程序。在cache被開啟之后,所有cache中的HTTP請求都可以直接在本地存儲中進行響應,并不需要開啟一個新的網絡連接。被cache起來的response可以被server所確保沒有過期,這樣就減少了下載所需的帶寬。沒有被cached的response會為了方便下次請求而被存儲在response cache中。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看