package com.sherlock.app_handler;

import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL; import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.widget.EditText;
import android.widget.ProgressBar; /***
* 测试Handler的基本使用
* @author sherlock
1. 创建Handler成员变量对象, 并重写其handleMessage()
2. 在分/主线程创建Message对象
3. 使用handler对象发送Message
4. 在handleMessage()中处理消息
*/
public class HandlerTestActivity extends Activity { private ProgressBar pb_handler1_loading;
private EditText et_handler1_result; //1. 创建Handler成员变量对象, 并重写其handleMessage()
private Handler handler = new Handler(){
public void handleMessage(android.os.Message msg) {//在主线程执行
if(msg.what == 1) {
//4. 在handleMessage()中处理消息
String result = (String) msg.obj;
et_handler1_result.setText(result);
pb_handler1_loading.setVisibility(View.INVISIBLE);
}
}
}; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_handler_test); pb_handler1_loading = (ProgressBar) findViewById(R.id.pb_handler1_loading);
et_handler1_result = (EditText) findViewById(R.id.et_handler1_result);
} /*
1. 主线程, 显示提示视图(ProgressDialog/ProgressBar)
2. 分线程, 联网请求, 并得到响应数据
3. 主线程, 显示数据/隐藏提示视图
*/
public void getSubmit1(View v) {
//1. 主线程, 显示提示视图(ProgressDialog/ProgressBar)
pb_handler1_loading.setVisibility(View.VISIBLE);
//2. 分线程, 联网请求, 并得到响应数据
new Thread(){
public void run() {
String path = "http://192.168.3.18:8080/SSH/client/json/myFile_search.shtml?name=Tom&age=12";
try {
final String result = requestToString(path); //3. 主线程, 显示数据
runOnUiThread(new Runnable() {
@Override
public void run() {
et_handler1_result.setText(result);
pb_handler1_loading.setVisibility(View.INVISIBLE);
}
});
} catch (Exception e) {
e.printStackTrace();
}
}
}.start();
} public void getSubmit2(View v) {
//1). 主线程, 显示提示视图(ProgressDialog/ProgressBar)
pb_handler1_loading.setVisibility(View.VISIBLE);
//2). 分线程, 联网请求, 并得到响应数据
new Thread(){
public void run() {
String path = "http://192.168.3.18:8080/SSH/client/json/myFile_search.shtml?name=Tom&age=12";
try {
String result = requestToString(path); //3). 主线程, 显示数据
//2. 在分/主线程创建Message对象
Message message = Message.obtain();
message.what = 1;//标识
message.obj = result;
//3. 使用handler对象发送Message
handler.sendMessage(message);
} catch (Exception e) {
e.printStackTrace();
}
}
}.start();
} /**
* 请求服务器端, 得到返回的结果字符串
* @param path :
* @throws Exception
*/
public String requestToString(String path) throws Exception {
URL url = new URL(path);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setConnectTimeout(5000);
connection.setReadTimeout(5000);
connection.connect();
InputStream is = connection.getInputStream();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int len = -1;
while ((len = is.read(buffer)) != -1) {
baos.write(buffer, 0, len);
}
baos.close();
is.close();
String result = baos.toString();
connection.disconnect(); return result;
} }

  

Android 测试Handler的基本使用的更多相关文章

  1. Android之Handler探索

    Handler背景理解: Handler被最多的使用在了更新UI线程中,但是,这个方法具体是什么样的呢?我在这篇博文中先领着大家认识一下什么是handler以及它是怎么样使用在程序中,起着什么样的作用 ...

  2. 【转】[Android实例] Handler+ExecutorService(线程池)+MessageQueue模式+缓存模式

    android线程池的理解,晚上在家无事 预习了一下android异步加载的例子,也学习到了一个很重要的东东 那就是线程池+缓存  下面看他们的理解. [size=1.8em]Handler+Runn ...

  3. Android中Handler使用浅析

    1. Handler使用引出 现在作为客户,有这样一个需求,当打开Activity界面时,开始倒计时,倒计时结束后跳转新的界面(思维活跃的朋友可能立马想到如果打开后自动倒计时,就类似于各个APP的欢迎 ...

  4. [Android实例] Handler+ExecutorService(线程池)+MessageQueue模式+缓存模式

    android线程池的理解,晚上在家无事 预习了一下android异步加载的例子,也学习到了一个很重要的东东 那就是线程池+缓存  下面看他们的理解. [size=1.8em]Handler+Runn ...

  5. android线程 Handler Message Queue AsyncTask线程模型 线程交互 + 修改Button样式 示例 最终easy整合版

     首先原谅我把文章的标题写的这么长.其实我还嫌弃它短了因为 写不下去了所以我就不写了.因为我实在不知道该怎么定义这篇文章的标题或许应该叫 "乱谈"比较合适. 这样可能还体现了 ...

  6. Android测试提升效率批处理脚本(三)

    前言: 前面放出过几次批处理,这次只放一个环境检查的被管理员给打回来了,不得不再找找几个有含金量的放出来,请看正文~~~ 目录 1.Android环境检查 2.Android内存监控 3.模拟蓝牙手柄 ...

  7. Android的Handler机制

    Handler机制的原理 Android 的 Handler 机制(也有人叫消息机制)目的是为了跨线程通信,也就是多线程通信.之所以需 要跨线程通信是因为在 Android 中主线程通常只负责 UI ...

  8. Android测试基础题(三)

    今天接着给大家带来的是Android测试基础题(三).    需求:定义一个排序的方法,根据用户传入的double类型数组进行排序,并返回排序后的数组 俗话说的好:温故而知新,可以为师矣 packag ...

  9. Android测试提升效率批处理脚本(二)

    前言: 前面放出过一次批处理,本次再放出一些比较有用的批处理(获得当前包名.查看APP签名信息等),好长时没来写博客了,简单化,请看正文,更多脚本尽请期待~~~(不定期) 目录 1.[手机录屏(安卓4 ...

随机推荐

  1. 常用COBOL函数

    本文来自(http://refer.it-manual.com/cobol.html) COBOL関数(JIS-COBOL規格標準)の一覧表を掲載しています. COBOL関数一覧表は.各項目での並べ替 ...

  2. 41、javaMail机制

    SMTP 是一种TCP协议支持的提供可靠且有效电子邮件传输的应用层协议.SMTP 是建立在 TCP上的一种邮件服务,主要用于传输系统之间的邮件信息并提供来信有关的通知. package com.ith ...

  3. 寻找 nani (1)

    test.pl文件room(kitchen). room(office). room(hall). room('dining room'). room(cellar). location(desk,o ...

  4. echarts引入及应用

    1.在官网上下载echarts并引入项目中 <script src="js/echarts.js"></script> 2.给一个DOM作为图表展示的容器, ...

  5. 刷CM7固件 乐padA1-07专用固件

    --------------------------------------------------------------------------------               前几天在版 ...

  6. 循序渐进Python3(十一) --5-- 同源策略

    一.什么是同源策略 同源策略(Same origin policy)是一种约定,它是浏览器最核心也最基本的安全功能.它是由Netscape提出的一个著名的安全策略,现在所有的可支持javascript ...

  7. 关于GC的几篇文章

    http://msdn.microsoft.com/zh-cn/magazine/bb985010(en-us).aspx http://msdn.microsoft.com/zh-cn/magazi ...

  8. 用Redis构建分布式锁-RedLock(真分布)

    在不同进程需要互斥地访问共享资源时,分布式锁是一种非常有用的技术手段. 有很多三方库和文章描述如何用Redis实现一个分布式锁管理器,但是这些库实现的方式差别很大,而且很多简单的实现其实只需采用稍微增 ...

  9. Camstar Portal modeling user guid --自定义用户菜单

    通过studio 创建 menu definition 创建菜单 创建成功后到employee界面设置对应菜单就可以了

  10. 第一次到IT公司上班!

    今日是自个的首次正式到IT公司进行作业,感触也是别有一番兴趣!如今就让自个回味下第一天的作业经历吧! 我上班的公司叫西安西科软件技术有限公司,第一天上班的缘故,早上起得很早,差不多六点半还没到就起床洗 ...