第三方架構之ThinkAndroid 學習總結(二)

來源:互聯網
上載者:User

標籤:row   param   cli   his   map      client   返回   ima   

上文記錄了一些ThinkAndroid常用的模組,本文繼續介紹ThinkAndroid中的網路化模組。

按照慣例先上Github原文地址:https://github.com/white-cat/ThinkAndroid

 

一、Http模組使用方法:

  •   非同步get方法
  1. 執行個體化AsyncHttpClient對象
  2. 調用非同步get方法 傳入(String url ,new AsyncHttpResponseHandler方法)
  3. 實現onStart()、onSuccess()、onFailure()、onFinish()方法
AsyncHttpClient client = new AsyncHttpClient();        client.get("http://www.thinkandroid.cn/", new AsyncHttpResponseHandler()        {            @Override            public void onSuccess(String content)            {                // TODO Auto-generated method stub                super.onSuccess(content);                TALogger.d(LoginActivity.this, content);            }            @Override            public void onStart()            {                // TODO Auto-generated method stub                super.onStart();            }            @Override            public void onFailure(Throwable error)            {                // TODO Auto-generated method stub                super.onFailure(error);            }            @Override            public void onFinish()            {                // TODO Auto-generated method stub                super.onFinish();            }        });
  •   同步get方法
  1. 執行個體化TAsyncHttpClient對象
  2. 調用非同步get方法 傳入(String url ,new AsyncHttpResponseHandler方法)
  3. 實現onStart()、onSuccess()、onFailure()、onFinish()方法
TASyncHttpClient client = new TASyncHttpClient();    client.get("http://www.thinkandroid.cn/", new AsyncHttpResponseHandler()        {            @Override            public void onSuccess(String content)            {                // TODO Auto-generated method stub                super.onSuccess(content);                TALogger.d(LoginActivity.this, content);            }            @Override            public void onStart()            {                // TODO Auto-generated method stub                super.onStart();            }            @Override            public void onFailure(Throwable error)            {                // TODO Auto-generated method stub                super.onFailure(error);            }            @Override            public void onFinish()            {                // TODO Auto-generated method stub                super.onFinish();            }        });
  • 使用http模組上傳檔案 或者 提交資料 到伺服器(post方法、非同步)類似於前面的Get方法
  1. 執行個體化AsyncHttpClient對象
  2. 執行個體化RequestParams對象,並put添加索引值對參數
  3. 調用非同步post方法 傳入(String url ,new AsyncHttpResponseHandler方法)
  4. 實現onStart()、onSuccess()、onFailure()、onFinish()方法
RequestParams params = new RequestParams();      params.put("username", "white_cat");          params.put("password", "123456");          params.put("email", "[email protected]");          params.put("profile_picture", new File("/mnt/sdcard/testpic.jpg")); // 上傳檔案          params.put("profile_picture2", inputStream); // 上傳資料流          params.put("profile_picture3", new ByteArrayInputStream(bytes)); // 提交位元組流        client.post("http://www.thinkandroid.cn/", new AsyncHttpResponseHandler()        {            @Override            public void onSuccess(String content)            {                // TODO Auto-generated method stub                super.onSuccess(content);                TALogger.d(LoginActivity.this, content);            }            @Override            public void onStart()            {                // TODO Auto-generated method stub                super.onStart();            }            @Override            public void onFailure(Throwable error)            {                // TODO Auto-generated method stub                super.onFailure(error);            }            @Override            public void onFinish()            {                // TODO Auto-generated method stub                super.onFinish();            }        });    }
  • 同理使用http模組上傳檔案 或者 提交資料 到伺服器(post方法、同步)
  • 使用http下載檔案:支援斷點續傳,隨時停止下載任務 或者 開始任務
  1. 執行個體化AsyncHttpClient對象
  2. 執行個體化FileHttpResponseHandler對象,並傳入參數檔案的緩衝路徑
  3. 實現onProgress()、onSuccess()、onFailure())方法
  4. fileHttpResponseHandler.setInterrupt(false);為停止暫停方法 otherwise 為開啟下載暫停方法
  5. 調用syncHttpClient的download(url,fileHttpResponseHandler);方法,傳入url地址及FileHttpResponseHandler對象

ps:一般在onProgress裡執行處理下載進度,速度等操作;

執行個體代碼:

 

  • 單線程、多任務下載
  1. 執行個體化DownLoadManager對象
  2. 調用addHandler方法並傳入
  3. 調用下載回調方法並實現OnLoading()、onAdd 等方法
  4. 調用pauseHandler暫停下載任務

執行個體代碼如下:

final DownloadManager mDownloadManager = DownloadManager.getDownloadManager();

  mDownloadManager.addHandler(url);

二、圖片模組 方法

  • imageview載入圖片的時候無需考慮圖片載入過程中出現的oom和android容器快速滑動時候出現的圖片錯位等現象。

   載入:

 @TAInjectView(id = R.id.listView)    ListView  lv;    Adapter adapter = new Adapter(this, getTAApplication());//傳入TAapplication   lv.setAdapter(adapter);
綁定資料:
1、執行個體化TADownloadBitmapHandler對象傳入參數context,圖片寬高
2、執行個體化TABitmapCallBackHanlder對象,設定圖片的載入中圖片通過setLoadingImage方法
3、執行個體化TABitmapCahceWork對象
4、該對象調用setFileCache實現設定緩衝路徑
5、該對象調用步驟2的bitmap回掉方法並傳入tcbh對象
6、該對象調用步驟1的setProcessDataHandler方法傳入TDBH對象
7、TABitmapCacheWork對象調用loadFormCache方法Object對象及imageview 進行圖片緩衝讀取
執行個體代碼如下:

 

getView方法中進行資料適配:

三、緩衝模組 方法
  • 很簡單的實現緩衝,以一個簡單的檔案快取為例
  • 下載處理類

  • 緩衝結果返回操作類

調用緩衝處理方法:

四、下載器模組
  •  可以簡單的實現多線程下載、後台下載、斷點續傳、對下載進行控制、如開始、暫停、刪除等等原理同單線程多任務下載:
private DownloadManager downloadManager;
downloadManager = DownloadManager.getDownloadManager();        downloadManager.setDownLoadCallback(new DownLoadCallback()        {            @Override            public void onSuccess(String url)            {
} @Override public void onLoading(String url, String speed, String progress) { // TODO Auto-generated method stub } }); //添加 downloadManager.addHandler(url); //繼續 downloadManager.continueHandler(url); //暫停 downloadManager.pauseHandler(url); //刪除 downloadManager.deleteHandler(url);}
  • 後台下載

    private IDownloadService downloadService;    ServiceConnection serviceConnection=new ServiceConnection()    {        @Override        public void onServiceDisconnected(ComponentName name)        {            // TODO Auto-generated method stub        }        @Override        public void onServiceConnected(ComponentName name, IBinder service)        {            // TODO Auto-generated method stub            downloadService=(IDownloadService)service;        }    };    //新增工作    downloadService.addTask(url)    //暫停任務    downloadService.pauseTask(url)    //繼續任務    downloadService.continueTask(url)    //刪除任務    downloadService.deleteTask(url)


第三方架構之ThinkAndroid 學習總結(二)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.