Volley框架 xUtils 框架
2015-09-14 14:55
363 查看
Volley
代码中用到的是POST方法,写了一个匿名内部类,复写了一个protected Map
public class VolleyActivity extends Activity implements View.OnClickListener { private Button mButtonVolley; private Button mButtonImage; private TextView mTextViewConnect; private NetworkImageView mNetworkImageView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_volley); mButtonVolley = (Button) findViewById(R.id.button_volley); mButtonImage = (Button) findViewById(R.id.button_image); mButtonVolley.setOnClickListener(this); mButtonImage.setOnClickListener(this); mTextViewConnect = (TextView) findViewById(R.id.textview_connect); mNetworkImageView = (NetworkImageView) findViewById(R.id.netimage); } @Override public void onClick(View view) { switch (view.getId()){ case R.id.button_image: mNetworkImageView.setImageUrl("http://pic1.nipic.com/2008-09-08/200898163242920_2.jpg", MySingleton.getInstance(this).getImageLoader()); break; case R.id.button_volley: // RequestQueue requestQueue = Volley.newRequestQueue(getApplicationContext()); StringRequest stringRequest = new StringRequest(Request.Method.POST, "http://192.168.0.30:8080/MyWebTest/MyTestServerlet", new Response.Listener<String>() { @Override public void onResponse(String response) { mTextViewConnect.setText(response); } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { mTextViewConnect.setText("网络连接错误"); } }){ @Override protected Map<String, String> getParams() throws AuthFailureError { HashMap<String,String> map = new HashMap<>(); map.put("username","zhangsan"); return super.getParams(); } }; // requestQueue.add(stringRequest); MySingleton.getInstance(getApplicationContext()).addToRequestQueue(stringRequest); break; } } }
单例设计
public class MySingleton { private static MySingleton mInstance; private RequestQueue mRequestQueue; private ImageLoader mImageLoader; private static Context mCtx; private MySingleton(Context context) { mCtx = context; mRequestQueue = getRequestQueue(); mImageLoader = new ImageLoader(mRequestQueue, 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 MySingleton getInstance(Context context) { if (mInstance == null) { mInstance = new MySingleton(context); } return mInstance; } public RequestQueue getRequestQueue() { if (mRequestQueue == null) { // getApplicationContext() is key, it keeps you from leaking the // Activity or BroadcastReceiver if someone passes one in. mRequestQueue = Volley.newRequestQueue(mCtx.getApplicationContext()); } return mRequestQueue; } public <T> void addToRequestQueue(Request<T> req) { getRequestQueue().add(req); } public ImageLoader getImageLoader() { return mImageLoader; } }
xUtils
xUtils也是封装好的一个东西,包含的内容很多,包括HttpUtils、ViewUtils、BitmapUtils、dbUtils.使用时注意倒包。
HttpUtils
用于网络连接,因为是封装好的,所以用起来比较方便。同样包含get和post两种方法
可以利用反射机制,不需要写findViewById,引入布局文件的方法如下:@ViewInject(R.id.button_xutils_get)
ViewUtils.inject(this);
package com.example.administrator.networkdemo; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.TextView; import com.lidroid.xutils.HttpUtils; import com.lidroid.xutils.ViewUtils; import com.lidroid.xutils.exception.HttpException; import com.lidroid.xutils.http.RequestParams; import com.lidroid.xutils.http.ResponseInfo; import com.lidroid.xutils.http.callback.RequestCallBack; import com.lidroid.xutils.http.client.HttpRequest; import com.lidroid.xutils.view.annotation.ViewInject; import com.lidroid.xutils.view.annotation.event.OnClick; /** * Created by Administrator on 2015/9/14. */ public class XUtilsActivity extends Activity implements View.OnClickListener { @ViewInject(R.id.button_xutils_get) private Button mButtonXutilsGet; @ViewInject(R.id.button_xutils_post) private Button mButtonXutilsPost; @ViewInject(R.id.textview_connect) private TextView mTextViewContent; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_xutils); ViewUtils.inject(this); } @OnClick({R.id.button_xutils_get,R.id.button_xutils_post}) @Override public void onClick(View view) { switch (view.getId()){ case R.id.button_xutils_get: HttpUtils client = new HttpUtils(); client.send(HttpRequest.HttpMethod.GET, "http://www.360.com", new RequestCallBack<String>() {//第三个参数new RequestCallBack是对事件的监听 @Override public void onSuccess(ResponseInfo<String> responseInfo) { mTextViewContent.setText(responseInfo.result); } @Override public void onFailure(HttpException e, String s) { // e.getExceptionCode(); mTextViewContent.setText("网络连接错误"); } }); break; case R.id.button_xutils_post: HttpUtils client2 = new HttpUtils(); RequestParams params = new RequestParams(); params.addBodyParameter("username","xutilspost"); client2.send(HttpRequest.HttpMethod.POST, "http://192.168.0.30:8080/MyWebTest/MyTestServerlet", params, new RequestCallBack<String>() { @Override public void onSuccess(ResponseInfo<String> responseInfo) { mTextViewContent.setText(responseInfo.result); } @Override public void onFailure(HttpException e, String s) { mTextViewContent.setText("网络连接错误"); } }); break; } } }
dbUtils
利用xUtils还可以方便数据库查找,具体方法如下:user是表名,my_first_db是数据库名。同样注意倒包。
case R.id.button_select: DbUtils dbUtils = DbUtils.create(this,"my_first_db"); try { List<User> users = dbUtils.findAll(Selector.from(User.class)); for (User user:users){ Log.d("cursor","用户名"+user.getName()+" 密码"+user.getPassword()); } } catch (DbException e) { e.printStackTrace(); }
@Table(name = "user") public class User { @Column(column = "id") private String id; private String name; private String password; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } }
相关文章推荐
- 在Xcode下编译cocos2d-x语言为lua时出错的解决方案
- Android 网络通信框架Volley
- Android Intent.FLAG_NEW_TASK详解,包括其他的标记的一些解释
- 【SSH系列】——手动搭建SSH环境
- oracle锁表进程查看并强制关闭
- linux fcntl()函数
- json 除去转义字符以及查看json错误
- iOS学习笔记:UITableView想要的都有
- ASPx组件访问模板中的控件
- Web前端知识技能大汇总
- SWOT分析是神马?
- Visio使用技巧—框图多输入的实现
- zabbix之日志文件监控
- Android onKeyDown 再按一次退出
- HDU 3371 Connect the Cities
- IMX6Q(TQIMX6Q/TQE9)移植笔记
- 开发中用到的视频存储
- android和Vitamio使用比较
- [LeetCode] Zigzag Conversion
- Django URL传递参数的方法总结