您好,登錄后才能下訂單哦!
這篇“android中gzip數據壓縮與網絡框架解壓縮怎么實現”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“android中gzip數據壓縮與網絡框架解壓縮怎么實現”文章吧。
gzip是一種常用的壓縮算法,它是若干種文件壓縮程序的簡稱,通常指GNU計劃的實現,此處的gzip代表GNU zip。
HTTP協議上的GZIP編碼是一種用來改進WEB應用程序性能的技術。大流量的WEB站點常常使用GZIP壓縮技術來讓用戶感受更快的速度。
Gzip開啟以后會將輸出到用戶瀏覽器的數據進行壓縮的處理,這樣就會減小通過網絡傳輸的數據量,提高瀏覽的速度。
/** * 字節流gzip壓縮 * @param data * @return */ public static byte[] gZip(byte[] data) { byte[] b = null; try { ByteArrayInputStream in = new ByteArrayInputStream(data); ByteArrayOutputStream out = new ByteArrayOutputStream(); GZIPOutputStream gzip = new GZIPOutputStream(out); byte[] buffer = new byte[4096]; int n = 0; while((n = in.read(buffer, 0, buffer.length)) > 0){ gzip.write(buffer, 0, n); } gzip.close(); in.close(); b = out.toByteArray(); out.close(); } catch (Exception ex) { ex.printStackTrace(); } return b; }
/** * gzip解壓 * @param data * @return */ public static byte[] unGZip(byte[] data){ // 創建一個新的輸出流 ByteArrayOutputStream out = new ByteArrayOutputStream(); try { ByteArrayInputStream in = new ByteArrayInputStream(data); GZIPInputStream gzip = new GZIPInputStream(in); byte[] buffer = new byte[4096]; int n = 0; // 將解壓后的數據寫入輸出流 while ((n = gzip.read(buffer)) >= 0) { out.write(buffer, 0, n); } in.close(); gzip.close(); out.close(); } catch (Exception e) { e.printStackTrace(); } return out.toByteArray(); }
一、采用內存數據庫保存記錄。
二、請求時采用重新開新線程方式,在子線程中請求網絡請求。
三、數據請求后,可通過EventBus來設置返回結果的參數和返回信息,若其它類需要獲取狀態時,需要自己注冊監聽,動態去獲取返回值。
使用場景:應用程序內各組件間、組件與后臺線程間的通信。
比如請求網絡,等網絡返回時通過Handler或Broadcast通知UI,兩個Fragment之間需要通過Listener通信,這些需求都可以通過EventBus實現。
\1. 添加依賴:implementation 'org.greenrobot:eventbus:3.0.0' \2. 注冊:EventBus.getDefault().register(this);
public class Student { private String name; private int age; public Student(String name, int age) { this.name = name; this.age = age; } public void setName(String name) { this.name = name; } public void setAge(int age) { this.age = age; } public String getName() { return name; } public int getAge() { return age; } }
EventBus.getDefault().post(new Student("劉哈哈", 27));
//接收事件 @Subscribe(threadMode = ThreadMode.MAIN) public void studentEventBus(Student student){ mShow.setText("姓名:"+student.getName()+" "+"年齡:"+student.getAge()); }
解注冊(防止內存泄漏):EventBus.getDefault().unregister(this);
網絡請求成功后,需要注意文件流的大小,太大容易下載緩慢,解決緩慢問題
1、JSON返回格式,盡量去KEY,將JSONOBJECT修改為JSONArray格式。
2、對數據進行壓縮,采用GZIP對數據進行壓縮處理:網絡請求時服務器對數據壓縮,移動端請求到結果后,再進行解壓。
以上就是關于“android中gzip數據壓縮與網絡框架解壓縮怎么實現”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。