pre-network android網絡預加載框架

前言

現在android網絡優化方案非常多,例如針對連接管理和緩存的優化方案,例如:okhttp,針對數據傳輸數據壓縮的優化方案,例如:protobuf;今天介紹一個通過修改調用方式優化的方案:網絡預加載框架- pre-network。

項目地址:https://github.com/woshiliyihang/pre-network

項目介紹

pre-network是一款android網絡框架,更加準確的說法是觀察者模式預處理器;它主要的特點是預處理網絡加載,設計思想是使用觀察者模式的訂閱式網絡框架。

軟件架構

基于觀察者模式的設計,每個網絡請求相當于一個被觀察者,每個使用這個網絡請求地方只需要添加觀察者,就可以獲取網絡請求數據,每個網絡請求必須是唯一的,可以添加多個觀察者。

安裝教程

  1. 引用依賴
implementation 'com.liyihang:pre-network:1.3.0'

使用說明

  1. 發起網絡請求
    dome當中MainActivity點擊跳頁按鈕打開新activity時候首先執行網絡請求,然后執行跳轉。
        Map<String, String> headers=new HashMap<>();
        headers.put("headerInfo", "test");
        //第一個參數 是標識網絡請求的唯一id,第二個參數是url, 第三個參數是請求參數,第四個參數是請求頭部,第五個參數是請求方式。
        PreNetworkHelper.getInstance().addRequestObservable(new PNQuickRequest(url_id_only, "https://blog.csdn.net/mhhyoucom/","name=liyihang&age=18", headers, "GET"));

addRequestObservable 是簡單封裝唯一網絡請求,可以根據項目請求使用自己的網絡框架。這樣網路請求將立即執行。

  1. 訂閱這個網絡請求
    dome中的OtherActivity就是要訂閱這個網絡請求。使用下面代碼訂閱:
        PreNetworkHelper.getInstance().addObserver(new UpdateUI(this));

UpdateUI 就是訂閱者;

public class UpdateUI extends PNBaseObserver {

    private WeakReference<OtherActivity> activity;

    public UpdateUI(OtherActivity activity) {
        this.activity = new WeakReference<>(activity);
    }

    @Override
    public void pre() {//訂閱回調開始
        // 刪除網絡請求被觀察者,如果不刪除一直保存在內存中
        PreNetworkHelper.getInstance().removeRequestObservable(MainActivity.url_id_only);
    }

    @Override
    public void result(String res) {//網絡請求成功處理函數
        if (activity.get()==null)
            return;
        activity.get().sendStateSelf(PNBaseActivity.getMsgObj(10, res));
    }

    @Override
    public void error(String err) {//網絡請求失敗處理函數
        Toast.makeText(activity.get(), err, Toast.LENGTH_LONG).show();
    }

    @Override
    public void end() {// 訂閱回調結束

    }

    @Override
    public String getId() {
        return MainActivity.url_id_only;//要訂閱的網絡請求唯一id
    }
}

所有回調都在UI線程中。

參與貢獻

  1. 李一航
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,287評論 25 708
  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,923評論 18 139
  • 不知從何說起,現在的我,想你時心情已經不再沉重了。天氣預報上說明后兩天都會有很大的雨呢,而每逢陰天下雨,你的關節都...
    蹺腿的小鵝閱讀 673評論 0 2
  • 文/風夢明珠 九點就躺著,躺著還是沒能睡著。很想吃點安眠藥或者鎮靜抗焦慮的藥讓自己安靜入睡。 剛剛不小心點到了一個...
    風夢明珠閱讀 370評論 6 8
  • 今天有位寶媽說我覺得孩子的健康第一,聽話第二,成績第三的時候,我瞬間就想,聽話的孩子真的好嗎? 生活中,我們常常會...
    纖陌顏閱讀 254評論 0 1