android hander 线程用法
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
super.onCreateView(inflater, container, savedInstanceState);
view = inflater.inflate(R.layout.frg_listtwd, null);// 显示界面布局
myListView = (ListView) view.findViewById(R.id.lsttwds);// 列表布局
loadMoreView = inflater.inflate(R.layout.load_more, null);// 加载分页
btnLoadMore = (Button) loadMoreView.findViewById(R.id.loadMoreButton);// 分页按钮 bundle = this.getArguments(); // 获取条件
conditionStr = bundle.getString("conditionStr");
ctx = view.getContext();
try {
loadDataHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
if (msg.what == 0x65533) {
myListView.setAdapter(myListViewAdapter);
loadMoreInit(conditionStr);
}
if (msg.what == 0x65534) {
Toast.makeText(getActivity(),
"没有该患者记录:",
Toast.LENGTH_LONG).show();
}
}
};
//根据体温单条件获取体温单数据
loadDataThread = new Thread(new Runnable() {
@Override
public void run() {
try {
TWDatasize = getTWDCount(conditionStr);// 加载初始数据
if (TWDatasize > 0) {
int count = (myListViewAdapter == null) ? 0
: myListViewAdapter.getCount();// 当前已加载的条数
String result = "";
RequireParams paraminfo = new RequireParams();
paraminfo.setMethodName("TWD_QueryRequest");
WebServiceInvoker invokerinfo = new WebServiceInvoker();
invokerinfo.setParams(paraminfo);
// 设置参数
SoapObject requestinfo = invokerinfo
.getRequestInstance();
requestinfo.addProperty("condition", conditionStr);
requestinfo.addProperty("recBegin",
currentIndex + 1);
if (count + pageSize <= TWDatasize) {
requestinfo.addProperty("recEnd", count
+ pageSize);
} else {
requestinfo.addProperty("recEnd", TWDatasize);
}
result = invokerinfo.invokeWS(requestinfo)
.getProperty(0).toString();
if (result.indexOf("error") >= 0) {
return;
} else {
myTWInfos = TWInfo.getTWInfo(result, "UTF-8");
myListViewAdapter = new ListTWAdapter(
TWDFragment.this.getActivity(),
myTWInfos,
R.layout.nurselist_items,
new String[] { "jlid", "rqsj",
"cshour", "JLR", "tw", "mbxl",
"xy1", "xy2" },
new int[] { R.id.cbox, R.id.itemsTitle,
R.id.itemsdaterecord,
R.id.itemsText,
R.id.nursedetail, R.id.itemsrow });
Message msg = loadDataHandler.obtainMessage();
msg.what = 0x65533;
msg.sendToTarget();
}
} else {
Message msg = loadDataHandler.obtainMessage();
msg.what = 0x65534;
msg.sendToTarget();
}
} catch (Exception e) {
Log.e(TAG, Log.getStackTraceString(e));
Toast.makeText(getActivity(),
"错误:" + Log.getStackTraceString(e),
Toast.LENGTH_LONG).show();
}
}
});
loadDataThread.start(); // 开启线程
} catch (Exception e) {
Log.e(TAG, Log.getStackTraceString(e));
}
return view;
}
@Override public void onClick(View v) { lsh = "576"; startdate = setstart_date.getText().toString(); enddate = setend_date.getText().toString(); btnLoginContext = v.getContext(); HandlerThread handlerThread = new HandlerThread("handlerThread"); handlerThread.start();// 启新线程 MyHandler myHandler = new MyHandler(handlerThread.getLooper());// 建消息队列的处理器(新线程) Message msg = myHandler.obtainMessage();// 绑定自定义的处理器 Bundle bundle = new Bundle(); bundle.putString("startdate", startdate); bundle.putString("enddate", enddate); bundle.putString("lsh", lsh); msg.setData(bundle); msg.sendToTarget(); } @Override public void handleMessage(Message msg) { try { super.handleMessage(msg); Bundle bundle = msg.getData(); if (bundle == null) return; String result = ""; StringBuilder str = new StringBuilder(); str.append("<condition><ksrqsj>" + bundle.get("startdate").toString()+ "</ksrqsj>"); str.append("<jsrqsj>" + bundle.get("enddate").toString()+ "</jsrqsj>"); str.append("<lsh>" + bundle.get("lsh").toString()+ "</lsh></condition>"); RequireParams params = new RequireParams(); params.setMethodName("GetNurseTableinfoPag"); WebServiceInvoker invoker = new WebServiceInvoker(); invoker.setParams(params); //设置参数 SoapObject request = invoker.getRequestInstance(); request.addProperty("condition", str.toString()); request.addProperty("recBegin", 0); request.addProperty("recEnd", 10); result = invoker.invokeWS(request).getProperty(0).toString(); if (result.indexOf("error") >= 0) { showMyDialog(btnLoginContext, result); return; } else { List<Map<String, Object>> myNurseInfos = null; myNurseInfos = NurseInfo.getNurseInfo(result, "UTF-8"); //查询成功 Intent intent = new Intent(); Bundle mybundle = new Bundle(); final SerializableMaplist myMap=new SerializableMaplist(); myMap.setMap(myNurseInfos); mybundle.putSerializable("listdata", myMap); intent.putExtras(mybundle); intent.setClass(getActivity(), NursingPageQuery.class); startActivity(intent); } } catch (Exception e) { Log.e(TAG, Log.getStackTraceString(e)); Toast.makeText(getActivity(),"错误:"+ Log.getStackTraceString(e),Toast.LENGTH_LONG).show(); }
android hander 线程用法的更多相关文章
- android操作线程各种方法解析
(一)刚开始学习android的时候我是这么写的 new Thread( new Runnable() { public void run() { myView.invalidate(); } }). ...
- android 进程/线程管理(四)续----消息机制的思考(自定义消息机制)
继续分析handler 和looper 先看看handler的 public void dispatchMessage(Message msg) { if (msg.callback != null) ...
- Android子线程更新UI的方法总结
版权声明:本文为博主原创文章,转载请注明出处:https://i.cnblogs.com/EditPosts.aspx?postid=6121280 消息机制,对于Android开发者来说,应该是非常 ...
- 【Android学习】android:layout_weight的用法实例
对于android:layout_weight的用法,用下面的例子来说明: <LinearLayout xmlns:android="http://schemas.android.co ...
- Android UI线程和非UI线程
Android UI线程和非UI线程 UI线程及Android的单线程模型原则 当应用启动,系统会创建一个主线程(main thread). 这个主线程负责向UI组件分发事件(包括绘制事件),也是在这 ...
- android 进程/线程管理(一)----消息机制的框架
一:android 进程和线程 进程是程序运行的一个实例.android通过4大主件,弱化了进程的概念,尤其是在app层面,基本不需要关系进程间的通信等问题. 但是程序的本质没有变,尤其是多任务系统, ...
- Android子线程真的不能更新UI么
Android单线程模型是这样描述的: Android UI操作并不是线程安全的,并且这些操作必须在UI线程执行 如果在其它线程访问UI线程,Android提供了以下的方式: Activity.run ...
- Android之Adapter用法总结-(转)
Android之Adapter用法总结 1.概念 Adapter是连接后端数据和前端显示的适配器接口,是数据和UI(View)之间一个重要的纽带.在常见的View(List View,Grid Vie ...
- Android之Adapter用法总结(转)
Android之Adapter用法总结 1.概念 Adapter是连接后端数据和前端显示的适配器接口,是数据和UI(View)之间一个重要的纽带.在常见的View(List View,Grid Vie ...
随机推荐
- C#-动态生成40个按钮,大小(20,20),要求每行6个放置
应该为for (int i=0;i<基本数据DataSet3.Tables [0].Rows .Count ;i++) { int ...
- hdu 5461 Largest Point 暴力
Largest Point Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid= ...
- android小笔记
1.启动其他应用程序 Intent launchIntent = getPackageManager().getLaunchIntentForPackage(currentAppInfo.getPac ...
- C++类的定义之作用域
每个类都定义了自己的新作用域和唯一的类型.在类的定义体内声明内成员,将成员名引入类的作用域.两个不同的类具有两个不同的类作用域. 例如: Class First { int memi; double ...
- php开发环境配置 web UI模板
web ui 能快速的整合进来?dwz? easyui? bootstrap 在Apache 中配置: 在http.conf中加入php的设置 #php5_startphpIniDir " ...
- java_不知道数据类型情况下,数组遍历-反射
if(items.getClass().isArray){ this.collection = new ArrayList(); int length = Array.getLength(items) ...
- 利用动画+div的前后切换实现轮播
可以利用两块div(分别设为前和后),用绝对定位使两块div重合,再利用z-index实现两块div的堆叠顺序(即显示的变换),利用动画和定时器实现轮播,这就是基本的思路. 完整的顺序如下: 1.先设 ...
- nfs文件系统挂载失败解决方法
nfs文件系统挂载失败解决方法 */--> nfs文件系统挂载失败解决方法 Table of Contents 1. 错误提示 2. 我的配置 1 错误提示 bootserver=255.255 ...
- 实现虚拟机上面的linux系统和windows主机的通信
一:配置静态ip 1:使用startx命名切换到图形化用户界面: 2:在“开始”——“系统设置”——“网络”——eth0 将通过dchp自动获取ip改为静态绑定ip ip地址:填入你要给的ip,需要与 ...
- 练习题之CyclicBarrier与CountDownLatch
一.CyclicBarrier使用 new Thread().start(); new Thread(new Runnable() {},"XXX").start(); publi ...