編輯:關於Android編程
Async-httpclient是一個用於Android應用程序開發的http訪問開源框架,開源在GitHub上,由於今天在GitHub上沒有看到下載地址,我這裡提供一個下載地址,是之前從GitHub上下載的,版本是V1.4.5。GitHub上還是有很多開發人員提供了http訪問的封裝類,但是個人覺得Async-httpclient寫的很不錯,所以就總結下該開源包中的代碼結構和調用方式。
Async-httpclient開源包中提供http的同步和異步訪問,http的get、post、set、delete等方法,在調用http訪問接口時針對傳入不同的回調接口,返回數據也進行了不同的封裝,待仔細閱讀源碼之後,將會明了。
當解開資源包之後,?\library\src\main\java\com\loopj\android\http該目錄下就是作者寫的源碼了,就只有27個類,這裡建議將?\library\src\main\java\目錄下的文件夾com拷貝至Android工程的根目錄下,並將其設置為“use as source folder”,這樣在寫調用例子的時候,就能去邊看源碼邊寫代碼了。
源碼包中主要的類有
AsyncHttpClient.java異步http訪問類
SyncHttpClient.java同步http訪問類
AsyncHttpRequest.java繼承Runnable對象,真實訪問http的線程
ResponseHandlerInterface.javahttp訪問回調接口,有很多子類,分別對返回數據進行了封裝
主要就是這個4大類,其余的還有https的證書自定義類、http重定向、base64、cookie的保存、http訪問重試次數的設定等等。這些需要的時候可以添加。
在閱讀源碼時,ResponseHandlerInterface的子類眾多,體驗了一把什麼是重載和覆寫!這才是面向對象編程的思想。接下來一個簡單的例子能看出使用此開源包的代碼之簡潔,可以少寫很多不必要的重復代碼。
ResponseHandlerInterface的子類關系如下:
在實際的開發中建議http訪問實例寫成單例。
<喎?/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHByZSBjbGFzcz0="brush:java;">public class MainActivity extends Activity {
private static AsyncHttpClient mHttpClient = new AsyncHttpClient();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
getData() ;
}
public void getData(){
mHttpClient.get("http://www.baidu.com", responseHandler) ;
}
AsyncHttpResponseHandler responseHandler = new AsyncHttpResponseHandler() {
@Override
public void onSuccess(int statusCode, Header[] headers,byte[] responseBody) {
for(Header header :headers){
Log.e("onSuccess","" + header.getName() + " = " + header.getValue()) ;
}
Log.e("onSuccess","statusCode = " + statusCode + ", responseBody = " + new String(responseBody)) ;
}
@Override
public void onFailure(int statusCode, Header[] headers,byte[] responseBody, Throwable error) {
for(Header header :headers){
Log.e("onFailure","" + header.getName() + " = " + header.getValue()) ;
}
Log.e("onFailure","statusCode = " + statusCode + " ,responseBody = " + responseBody) ;
}
} ;
}
二維碼發展到現在幾乎是每一個App都有的功能,之前項目裡用到了二維碼功能就研究了下如何嵌入zxing二維碼工程,之前的用法制包含了最基本的二維碼掃碼工能,用QQ時看到QQ
Android人臉識別技術用到的底層庫:android/external/neven/,framework 層:frameworks/base/media/java/an
相對布局要比前面講的線性布局和表格布局要靈活一些,所以平常用得也是比較多的。相對布局控件的位置是與其周圍控件的位置相關的,從名字可以看出來,這些位置都是相對的,確定出了其
前面文章介紹了Activity以及Intent的使用,本文就來介紹Service。如果把Activity比喻為前台程序,那麼Service就是後台程序,Service的整