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. STL学习之vector

    vector是一个线性顺序结构.相当于数组,但其大小可以不预先指定,并且自动扩展.它可以像指针一样被操作,由于它的特性我们完全可以将vector看做动态数组. 特点: 1.指定一块如同数组一样的连续存 ...

  2. dede判断当前文章

    <li><a href="/info/info3.html"  class=s  >企业文化 </a></li><li> ...

  3. DS实验题 融合软泥怪-2 Heap实现

    题目和STL实现:DS实验题 融合软泥怪-1 用堆实现优先队列 引言和堆的介绍摘自:Priority Queue(Heaps)--优先队列(堆) 引言: 优先队列是一个至少能够提供插入(Insert) ...

  4. PHP (sendmail / PHPMailer / ezcMailComposer)发送邮件

    一. 使用 PHP 内置的 mail() 函数 1. Windows 下 环境:WampServer2.5(Windows 10,Apache 2.4.9,MySQL 5.6.17,PHP 5.5.1 ...

  5. 【xcode】qt程序不通过qmake,运行找不到动态库的坑

    现象:试图在一个已有项目里增加qt的代码,因此手动加入相关framework(未通过qmake生成工程),编译连接都通过,但是运行时崩溃,提示错误: dyld: Library not loaded ...

  6. 【Git学习笔记】初始化Git仓库和版本回退

    学习地址 http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000 什么是版本库呢?版本库又 ...

  7. Enable Cross-Origin Requests in Asp.Net WebApi 2[Reprint]

    Browser security prevents a web page from making AJAX requests to another domain. This restriction i ...

  8. cloudera learning4:Hadoop集群规划

    涉及到一些关于硬件的东西,我也不是很懂,记录下来有待以后学习. Hadoop集群一般都是由小到大,刚开始可能只有4到6个节点,随着存储数据的增加,计算量的增大,内存需求的增加,集群慢慢变大. 比如按照 ...

  9. Quartz2D 编程指南(二)变换、图案、阴影

    概览 图形上下文 路径 颜色与颜色空间 变换 图案 阴影 渐变 透明层 Quartz 2D 中的数据管理 位图与图像遮罩 CoreGraphics 绘制 Layer 5.变换 简介 Quartz 2D ...

  10. Windows Server 2008 R2父域管理员与子域管理员相互登录访问

    一.问题: 父域创建的域管理员登录不了子域服务器,子域创建的域管理员登录不了父域服务器? 二.原因分析: 父域创建的域管理员是存在父域中,而子域创建的域管理员存在子域中,父域创建的管理员是不存在子域中 ...