1 package com.ch.day8_asynctaskdemo;
2
3 import java.util.ArrayList;
4
5 import com.ch.myutils.NetWorkUtil;
6
7 import android.os.AsyncTask;
8 import android.os.Bundle;
9 import android.app.Activity;
10 import android.content.Context;
11 import android.util.Log;
12 import android.view.Menu;
13 import android.view.View;
14 import android.view.View.OnClickListener;
15 import android.widget.Button;
16 import android.widget.EditText;
17
18 public class MainActivity extends Activity {
19 private EditText name;
20 private EditText pass;
21 private Button login;
22 Context mcontext;
23
24 @Override
25 protected void onCreate(Bundle savedInstanceState) {
26 super.onCreate(savedInstanceState);
27 setContentView(R.layout.activity_main);
28 mcontext = this;
29 init();
30 }
31
32 public void init(){
33 name = (EditText) findViewById(R.id.username);
34 pass = (EditText) findViewById(R.id.userpass);
35 login = (Button) findViewById(R.id.login);
36
37 login.setOnClickListener(new OnClickListener() {
38 @Override
39 public void onClick(View v) {
40 String nameV = name.getText().toString();
41 String passV = pass.getText().toString();
42
43 //判断网路是否畅通加权限
44 if(NetWorkUtil.isNetAvailable(mcontext)){//网络畅通
45 //通过AsyncTask访问服务器
46
47 new MyAsyncTask().execute(nameV,passV,NetWorkUtil.LOGIN_URL);//调用MyAsyncTask执行请求
48 }
49 }
50 });
51 }
52 class MyAsyncTask extends AsyncTask<String, Integer, String>{
53 // 后台执行,比较耗时的操作都可以放在这里
54 @Override
55 protected String doInBackground(String... params) {//params的类型和AsyncTask类的第一个泛型对应
56 // TODO Auto-generated method stub
57 String uname = params[0];//得到用户名
58 String upass = params[1];//得到密码
59 String url = params[2];//得到url
60 String rs = NetWorkUtil.loginCheck_Get_HttpClient(uname, upass, url);//请求服务器。得到结果
61
62 return rs;//把请求的结果传递到onPostExecute方法中
63 }
64 //相当于Handler 处理UI的方式,在这里面可以使用在doInBackground 得到的结果处理操作UI
65 @Override
66 protected void onPostExecute(String result) {//result的类型和AsyncTask类的第三个泛型对应
67 // TODO Auto-generated method stub
68 login.setText(result);
69 //判断登陆的结果,决定是否跳转
70
71 // super.onPostExecute(result);
72 }
73
74 }
75
76
77 }
package com.ch.myutils;

import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List; import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.params.BasicHttpParams;
import org.apache.http.params.HttpConnectionParams;
import org.apache.http.params.HttpParams;
import org.apache.http.util.EntityUtils; import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo; public class NetWorkUtil {
public static final String LOGIN_URL = "http://169.254.109.73:8080/serverof1407a/loginServlet";
public static boolean isNetAvailable(Context context){
//获得网络管理器
ConnectivityManager connM =
(ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo netInfo = connM.getActiveNetworkInfo();//得到网络详情 if(netInfo == null || !netInfo.isAvailable())
return false; return true;
} public static String loginCheck_Get_HttpClient(String name,String pass,String url){
//通过StringBuffer来加工url
StringBuffer sb = new StringBuffer(url);
sb.append("?username=");
sb.append(name);
sb.append("&userpass=");
sb.append(pass); String result = ""; HttpGet get = new HttpGet(sb.toString());//创建httpClient的get请求对象
//设置请求参数
HttpParams params = new BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(params, 5*1000);
HttpConnectionParams.setSoTimeout(params, 5*1000); HttpClient client = new DefaultHttpClient(params);//创建HttpClient对象 try {
HttpResponse res = client.execute(get);//执行请求,获得结果
if(res.getStatusLine().getStatusCode() == 200){
HttpEntity entity = res.getEntity();//获得相应结果,是一个HttpEntity对象
result = EntityUtils.toString(entity, "utf-8");//转换为字符串
}
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return result; } }

AsyncTask 异步处理的更多相关文章

  1. Android线程管理之AsyncTask异步任务

    前言: 前面几篇文章主要学习了线程以及线程池的创建与使用,今天来学习一下AsyncTask异步任务,学习下AsyncTask到底解决了什么问题?然而它有什么弊端?正所谓知己知彼百战百胜嘛! 线程管理相 ...

  2. AsyncTask异步交互和httpurlconnection结合使用

    //网络请求数据 package com.baidu.myutils; import java.io.BufferedReader; import java.io.InputStreamReader; ...

  3. Android多线程分析之五:使用AsyncTask异步下载图像

    Android多线程分析之五:使用AsyncTask异步下载图像 罗朝辉 (http://www.cnblogs.com/kesalin) CC 许可,转载请注明出处 在本系列文章的第一篇<An ...

  4. 使用AsyncTask异步更新UI界面及原理分析

    概述: AsyncTask是在Android SDK 1.5之后推出的一个方便编写后台线程与UI线程交互的辅助类.AsyncTask的内部实现是一个线程池,所有提交的异步任务都会在这个线程池中的工作线 ...

  5. Android 多线程----AsyncTask异步任务详解

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/3 ...

  6. android AsyncTask异步下载并更新进度条

    AsyncTask异步下载并更新进度条    //如果不是很明白请看上篇文章的异步下载 AsyncTask<String, Integer, String> 第一个参数:String 传入 ...

  7. Android中使用Thread线程与AsyncTask异步任务的区别

    最近和几个朋友交流Android开发中的网络下载问题时,谈到了用Thread开启下载线程时会产生的Bug,其实直接用子线程开启下载任务的确是很Low的做法,那么原因究竟如何,而比较高大上的做法是怎样? ...

  8. Android异步处理系列文章四篇之二 使用AsyncTask异步更新UI界面

    Android异步处理一:使用Thread+Handler实现非UI线程更新UI界面Android异步处理二:使用AsyncTask异步更新UI界面Android异步处理三:Handler+Loope ...

  9. Android使用AsyncTask异步线程网络通信获取数据(get json)

    摘要: android 4.0以上强制要求不能在主线程执行耗时的网络操作,网络操作需要使用Thead+Handler或AsyncTask,本文将介绍AsyncTask的使用方法. 内容: 1.添加Ht ...

  10. Android异步处理二:使用AsyncTask异步更新UI界面

    在<Android异步处理一:使用Thread+Handler实现非UI线程更新UI界面>中,我们使用Thread+Handler的方式实现了异步更新UI界面,这一篇中,我们介绍一种更为简 ...

随机推荐

  1. Unity3D设计原则

    原则1:单一职责 原则2:里氏替换原则(子类扩展但不改变父类功能) 原则3:依赖倒置原则 原则4:接口隔离原则 原则5:迪米特法则(最少知道原则) 原则6:开闭原则 原则1:单一职责原则 说到单一职责 ...

  2. memcache 笔记

    在windows下安装memecache,进入到安装目录,执行帮助命令可以查看到相关帮助 启动memcache,相关命令如上,比如-p就是端口号,memcache默认端口号是11211 语法:增加ad ...

  3. Weblogic部署项目过程中的一些问题

    weblogic启动,最后一段出现的警告: <Warning> <Log Management> <BEA-170011> <The LogBroadcast ...

  4. 解决导入so库报错小结

    最近公司准备将重构后的项目上线,可是等到我接手的时候发现一个很纠结的问题:安卓5.0以上的手机(例如我现在在用的红米note3)运行重构后项目发生报错,提示缺少某so库. 而5.0以下的手机(我的小米 ...

  5. linux 源码安装详解

    ./configure是用来检测你的安装平台的目标特征的.比如它会检测你是不是有CC或GCC,并不是需要CC或GCC,它是个shell脚本.make是用来编译的,它从Makefile中读取指令,然后编 ...

  6. Thinking in Java——笔记(15)

    Generics The term "generic" means "pertaining or appropriate to large groups of class ...

  7. python学习道路(day10note)(线程,进程)

    1.计算机的发展史 看alex的博客吧,了解一下可以了 2.线程与GIL简介 #线程 #一道单一的指令的控制流,寄生在进程中 #单一进程里的多个线程是共享数据的 #多个线程涉及修改共享数据的时候需要枷 ...

  8. 【待整理】MongoDB 数据集

    MongoDB复制集原理 https://yq.aliyun.com/articles/64?spm=5176.100239.blogcont14692.15.XzCCrj MongoDB管理:如何优 ...

  9. Python学习【第八篇】Set集合

    Set集合 set集合是无序,不能重复,可嵌套的序列 如何创建 li = [] dic = {"k1":123} se = {"123","456&q ...

  10. Java提高篇——理解String 及 String.intern() 在实际中的应用

    1. 首先String不属于8种基本数据类型,String是一个对象.   因为对象的默认值是null,所以String的默认值也是null:但它又是一种特殊的对象,有其它对象没有的一些特性. 2. ...