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


上文記錄了一些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", "2640017581@qq.com"); 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)



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM