Volley封装成线程池 简化了连接网络
流程图:
RequserQueue
StringRequest 四个参数 请求的方法,url,两个listener 一个成功的,一个失败的
要ResquestQueue.add(request)//单例不同
分为doGet、doPost。doPost时StringRequest后边+{
//POST方法时必须要加
@Override
protected Map<String, String> getParams() throws AuthFailureError {
HashMap<String,String> hashMap = new HashMap<>();
hashMap.put(“username”,”King”);
return hashMap;
}
}
NetworkImageView用来展示网络上的图片,使用ImageLoader
将RequestQueue单例
/**
* 单例,防止按一次按钮生成一次对象
* Created by Went_Gone on 2015/9/14.
*/
public class MySigleLeton {
// private String url;
private RequestQueue queue;
private static Context context;
private ImageLoader mImageLoader;
private static MySigleLeton mySigleLeton;
private MySigleLeton(Context context){
this.context = context;
queue = getQueue();
mImageLoader = new ImageLoader(queue,
new ImageLoader.ImageCache() {
private final LruCache<String, Bitmap>
cache = new LruCache<String, Bitmap>(20);
@Override
public Bitmap getBitmap(String url) {
return cache.get(url);
}
@Override
public void putBitmap(String url, Bitmap bitmap) {
cache.put(url, bitmap);
}
});
}
public static synchronized MySigleLeton getInstance(Context context){
if (mySigleLeton == null){
mySigleLeton = new MySigleLeton(context);
}
return mySigleLeton;
}
public RequestQueue getQueue() {
if (queue==null){
// getApplicationContext() is key, it keeps you from leaking the
// Activity or BroadcastReceiver if someone passes one in.
queue = Volley.newRequestQueue(context.getApplicationContext());
}
return queue;
}
public <T> void addToRequestQueue(Request req) {
getQueue().add(req);
}
public ImageLoader getImageLoader() {
return mImageLoader;
}
}
Activity中
public class VolleyActivity extends AppCompatActivity implements View.OnClickListener{
private Button mBtnVolley;
private Button mBtnVolleyPost;
private Button mBtnVolleyImageView;
private TextView mTextViewResponse;
private NetworkImageView imageView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_volley);
mBtnVolley = (Button) findViewById(R.id.button_internet_volley);
mBtnVolleyPost = (Button) findViewById(R.id.button_internet_volley_POST);
mBtnVolleyImageView = (Button) findViewById(R.id.button_internet_volley_imageview);
imageView = (NetworkImageView) findViewById(R.id.networkimageview);
mTextViewResponse = (TextView) findViewById(R.id.textview_volley);
mBtnVolley.setOnClickListener(this);
mBtnVolleyPost.setOnClickListener(this);
mBtnVolleyImageView.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.button_internet_volley:
// RequestQueue queue = Volley.newRequestQueue(getApplicationContext());//ReduestQueue 对象创建 Volley.newRequestQueue(Context)
StringRequest request = new StringRequest(Request.Method.GET, "http://192.168.***.*:8080/HTTpTest_Servelet/ServeletTest?username=Queue", new Response.Listener() {
@Override
public void onResponse(String response) {
mTextViewResponse.setText(response);
mTextViewResponse.setTextColor(Color.GREEN);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
mTextViewResponse.setText("网络连接错误");
}
});//GET时一共四个参数
MySigleLeton.getInstance(getApplicationContext()).getQueue().add(request);//单例 防止按一次按钮生成一次对象
// queue.add(request);
break;
case R.id.button_internet_volley_POST:
// RequestQueue queuePost = Volley.newRequestQueue(getApplicationContext());//ReduestQueue 对象创建 Volley.newRequestQueue(Context)
StringRequest requestPost = new StringRequest(Request.Method.POST, "http://192.168.***.**:8080/HTTpTest_Servelet/ServeletTest", new Response.Listener() {
@Override
public void onResponse(String response) {
mTextViewResponse.setText(response);
mTextViewResponse.setTextColor(Color.GREEN);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
mTextViewResponse.setText("网络连接错误");
}
}){
//POST方法时必须要加
@Override
protected Map<String, String> getParams() throws AuthFailureError {
HashMap<String,String> hashMap = new HashMap<>();
hashMap.put("username","King");
return hashMap;
}
};//GET时一共四个参数
MySigleLeton.getInstance(getApplicationContext()).getQueue().add(requestPost);
// queuePost.add(requestPost);
break;
case R.id.button_internet_volley_imageview:
imageView.setImageUrl("http://img.taopic.com/uploads/allimg/130512/267865-1305120S63212.jpg",MySigleLeton.getInstance(getApplicationContext()).getImageLoader());
break;
default:
break;
}
}
}