Volley框架是Google I/O 2013大會上發布的。Volley是Google針對Android平台上的網絡通信庫而誕生,該框架能使網絡通信更快,更簡單,更健壯。Volley的特點有:
Ⅰ:通信更簡單更快捷
ll:Get,Post網絡請求及網絡圖像進行高效異步處理
III:可以對多個網絡請求進行優先級排序以級多級別取消操作
IV:網絡請求緩存及與Activity生命周期進行聯動,在Activity銷毀的時候可以對網絡請求進行取消操作,防止內存洩露。
Volley的使用很簡單:
1,下載Volley的jar包或是源代碼,
2,獲取RequestQueue,一般我們是放到Application中進行初始化操作
3,實例化一個Request對象(StringRequest,JsonObjectRequest,JsonArrayRequest) 4,將Request加入RequestQueue即可。
首先學習的是最基礎的StringRequest: 主頁面布局文件:activity_main.xml
xmlns:tools=http://schemas.android.com/tools
android:layout_width=match_parent
android:layout_height=wrap_content
android:orientation=vertical
android:layout_margin=10dp >
-------------請求操作------------------------ public class MainActivity extends Activity implements OnClickListener {
private Button getBtn, postBtn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
getBtn = (Button) findViewById(R.id.get_btn);
postBtn = (Button) findViewById(R.id.post_btn);
getBtn.setOnClickListener(this);
postBtn.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.get_btn:// GET請求獲取數據
getStringRequest();
break;
case R.id.post_btn:// POST請求獲取數據
postStringequest();
break;
}
}
private void getStringRequest() {// 用GET方法使用字符串數據請求StringRequest
String url = http://apis.juhe.cn/mobile/get?phone=134****4320&key=d6099881640aed5e0bacc058cfd4357b;//key值是在聚合數據上申請的api
StringRequest strRequest = new StringRequest(Method.GET, url, new Listener
() {
@Override
public void onResponse(String arg0) {// 請求成功
Toast.makeText(MainActivity.this, arg0, Toast.LENGTH_LONG).show();
}
}, new ErrorListener() {
@Override
public void onErrorResponse(VolleyError arg0) {// 請求失敗
Toast.makeText(MainActivity.this, arg0.toString(), Toast.LENGTH_LONG).show();
}
});
strRequest.setTag(getLDM);
MyApplication.getRequestQueues().add(strRequest);
}
private void postStringequest() {// 用POST方法使用字符串數據請求StringRequest
String url = http://apis.juhe.cn/mobile/get?;
StringRequest postRequest = new StringRequest(Method.POST, url, new Listener() {
@Override
public void onResponse(String arg0) {
Toast.makeText(MainActivity.this, arg0, Toast.LENGTH_LONG).show();
}
}, new ErrorListener() {
@Override
public void onErrorResponse(VolleyError arg0) { Toast.makeText(MainActivity.this, arg0.toString(), Toast.LENGTH_LONG).show();
}
}) {
@Override
protected Map getParams() throws AuthFailureError {// getparams方法是Volley中使用POST請求數據時傳遞參數信息
Map map = new HashMap();
map.put(phone, 134****4320);
map.put(key, d6099881640aed5e0bacc058cfd4357b);
return map;
}
};
postRequest.setTag(postLDM);
MyApplication.getRequestQueues().add(postRequest);
}
}