上文記錄了一些ThinkAndroid常用的模塊,本文繼續介紹ThinkAndroid中的網絡化模塊。
按照慣例先上Github原文地址:https://github.com/white-cat/ThinkAndroid
一、Http模塊使用方法:
- 異步get方法
- 實例化AsyncHttpClient對象
- 調用異步get方法 傳入(String url ,new AsyncHttpResponseHandler方法)
- 實現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方法
- 實例化TAsyncHttpClient對象
- 調用異步get方法 傳入(String url ,new AsyncHttpResponseHandler方法)
- 實現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方法
- 實例化AsyncHttpClient對象
- 實例化RequestParams對象,並put添加鍵值對參數
- 調用異步post方法 傳入(String url ,new AsyncHttpResponseHandler方法)
- 實現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下載文件:支持斷點續傳,隨時停止下載任務 或者 開始任務
- 實例化AsyncHttpClient對象
- 實例化FileHttpResponseHandler對象,並傳入參數文件的緩存路徑
- 實現onProgress()、onSuccess()、onFailure())方法
- fileHttpResponseHandler.setInterrupt(false);為停止暫停的方法 otherwise 為開啟下載暫停的方法
-
調用syncHttpClient的download(url,fileHttpResponseHandler);方法,傳入url地址及FileHttpResponseHandler對象
ps:一般在onProgress里執行處理下載進度,速度等操作;
實例代碼:
-
單線程、多任務下載
- 實例化DownLoadManager對象
- 調用addHandler方法並傳入下載地址
- 調用下載回調方法並實現OnLoading()、onAdd 等方法
- 調用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)