五、应用实例
package com.example.test;
import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.toolbox.Volley;
import android.content.Context;
public class VolleyUtils {
private static VolleyUtils mUtils;
private Context mContext;
private RequestQueue mQueue;
private VolleyUtils(Context context){
mContext = context.getApplicationContext();
mQueue = Volley.newRequestQueue(mContext);
mQueue.start();
}
public static VolleyUtils getInstance(Context context){
if(null == mUtils){
synchronized (VolleyUtils.class) {
if(null == mUtils){
mUtils = new VolleyUtils(context);
}
}
}
return mUtils;
}
public void addRequest(Request request,Context context){
request.setTag(context);
mQueue.add(request);
}
public void cancelAllReq(Context context){ //某个Activity/Service的上下文
//这样只会取消对应界面的Request
if(mQueue != null){
mQueue.cancelAll(context);
}
}
}
package com.example.test;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.StringRequest;
import com.android.volley.toolbox.Volley;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
public class MainActivity extends Activity {
private RequestQueue mReqQueue;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mReqQueue = Volley.newRequestQueue(this); //一个请求队列绑定一个Activity
if(mReqQueue!=null){
mReqQueue.start(); //启动请求队列,不断提取请求信息
}
}
@Override
protected void onStart() {
super.onStart();
String url = "www.baidu.com";
//成功回调函数
Response.Listener<String> successListener = new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Log.d("TAG",response.toString());
}
};
//失败回调函数
Response.ErrorListener failListener = new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.d("TAG", error.toString());
}
};
//创建请求
StringRequest mRequest = new StringRequest(url, successListener, failListener);
//添加进请求队列
mReqQueue.add(mRequest);
}
@Override
protected void onDestroy() {
if(mReqQueue!=null){ //请求队列解绑
mReqQueue.stop();
mReqQueue = null;
}
super.onDestroy();
}
}
六、框架总结
单列优点:
1、提供了对唯一实例的受控访问。对象需要被公用的场合适合使用,如多个模块使用同一个数据源连接对象等等。
2、由于在系统内存中只存在一个对象,因此可以节约系统资源,对于一些需要频繁创建和销毁的对象单例模式无疑可以提高系统的性能。