1.需要加权限,主线程不允许连接网络 Handler,AsyncTask
2.粗粒信息:有无网络 细粒信息:2G,3G,4G,WIFI
3.ConnectivityManager
4.WebView控件 代码中.setWebViewClient(){} .setJavaScriptEnabled(true) .loadUrl(“”);(网页需要返回时复写onKyeDown .canGoBack(); .goback();) 放大缩小Zoom
setWebViewClient(new WebViewClient){
onReceivedError加载错误后实现的方法,start…,finish…开始和结束时实现的方法,比如加载进度条} .setWebChromeClient可设置ProgressBar
5.HttpConnection HttpClient(需导包 搜org.apache.http),doGet doPost方法。单线程和多线程下载
6.Volley
Volley使用了线程池来作为基础结构,主要分为主线程,cache线程和network线程。
其中蓝色部分代表主线程,绿色部分代表缓存线程,橙色部分代表网络线程。我们在主线程中调用RequestQueue的add()方法来添加一条网络请求,这条请求会先被加入到缓存队列当中,如果发现可以找到相应的缓存结果就直接读取缓存并解析,然后回调给主线程。如果在缓存中没有找到结果,则将这条请求加入到网络请求队列中,然后处理发送HTTP请求,解析响应结果,写入缓存,并回调主线程。
在网络请求队列中,若有空线程则进行请求,若没有空线程则在队列中等待。线程池RequestQueue使用单例设计模式。
DoGet
StringRequest request=new StringRequest(Request.Method.GET, "http://lzjtu.edu.cn", new Response.Listener<String>() {
@Override
public void onResponse(String response) {
mTextView.setText(response);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
mTextView.setText("网络连接错误");
}
});
MySingleton.getInstance(this).getRequestQueue().add(request);
DoPost
StringRequest request=new StringRequest(Request.Method.POST, "http://192.168.0.104:8080/Java_Web/MyAndroidHttpDemo", new Response.Listener<String>() {
@Override
public void onResponse(String response) {
mTextView.setText(response);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
mTextView.setText("网络连接错误");
}
}){
@Override
protected Map<String, String> getParams() throws AuthFailureError {
HashMap hashMap=new HashMap();
hashMap.put("username","zhangsan");
return hashMap;
}
};
MySingleton.getInstance(this).getRequestQueue().add(request);
NetWorkImageView加载网络图片(了解)一般使用ImageLoader
mNetworkImageView.setImageUrl("http://www.th7.cn/d/file/p/2014/09/17/79597e61ed42edcc1677095d45f4794c.png",MySingleton.getInstance(this).getImageLoader());
7.xUtils(View DB Bitmap Http)
HttpUtils
DoGet
HttpUtils client = new HttpUtils();
client.send(HttpRequest.HttpMethod.GET, "http://lzjtu.edu.cn", new RequestCallBack<String>() {
@Override
public void onSuccess(ResponseInfo<String> responseInfo) {
mTextView_xutils.setText(responseInfo.result);
}
@Override
public void onFailure(HttpException e, String s) {
mTextView_xutils.setText("加载失败");
}
});
DoPost
RequestParams params = new RequestParams();
params.addBodyParameter("username", "zhangsan");
HttpUtils client = new HttpUtils();
client.send(HttpRequest.HttpMethod.POST, "http://192.168.0.104:8080/Java_Web/MyAndroidHttpDemo", params, new RequestCallBack<String>() {
@Override
public void onSuccess(ResponseInfo<String> responseInfo) {
mTextView_xutils.setText(responseInfo.result);
}
@Override
public void onFailure(HttpException e, String s) {
mTextView_xutils.setText("网络连接失败");
}
});
ViewUtils 注解
@ViewInject(R.id.textview_xutils)
private TextView mTextView_xutils;
@ViewInject(R.id.button_xutils_doget)
private Button mButton_xutils_DoGet;
@ViewInject(R.id.button_xutils_dopost)
private Button mButton_xutils_DoPost;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_xutils);
ViewUtils.inject(this);
}
@OnClick({R.id.button_xutils_doget, R.id.button_xutils_dopost})
@Override
public void onClick(View v) {
switch (v.getId()) {
..........
DbUtils
@Table(name="user")
public class User {
@Column(column="id")
private String id;
private String name;
private String password;
DbUtils dbUtils=DbUtils.create(this,"MY_FIRST_DB.db");
StringBuffer buffer=new StringBuffer();
try {
List<User> users=dbUtils.findAll(Selector.from(User.class));
for(User user:users){
buffer.append("Name:"+user.getName()+" Password:"+user.getPassword());
}
mTextViewResult.setText(buffer);
} catch (DbException e) {
e.printStackTrace();
}