哈哈,博文取了个比较霸气的名字,大家不都喜欢这样忽悠人吗 呵呵!

好了,现在就是很简单的点击查询,然后这个查询有点花时间,不想见面出现假死现象,所以在另外的线程进行查询。

好了,代码在此:

package com.example.gulanfinddemo;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.os.Handler;import android.os.Looper;import android.os.Message;import android.util.Log;import android.widget.EditText;public class FindResActivity extends Activity {private MyHandler handler;private Boolean isKeywordFindBoolean = false;EditText resText;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_find_res);resText = (EditText)findViewById(R.id.ResText);Log.v("FindResActivity threadId:", String.valueOf(Thread.currentThread().getId()));Intent intent = getIntent();String findReString;if (null != intent.getStringExtra(MainActivity.suraAyaFindStr)) {findReString = "按章节查询";isKeywordFindBoolean = false;}else {findReString = "按关键字查询";isKeywordFindBoolean = true;}Looper looper = Looper.myLooper();handler = new MyHandler(looper);new findContentThread(handler, findReString).start();//resText.setText(findReString);}private class MyHandler extends Handler{public MyHandler(Looper looper){super(looper);}public void handleMessage(Message msg){if (msg.what == 0) {Bundle bundle = msg.getData();resText.setText(bundle.getString("res"));}}}}

  看出来了,重载了handler,在

handleMessage里会进行UI的更新。
package com.example.gulanfinddemo;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.util.Log;public class findContentThread extends Thread{private String queryKeyString;private Handler handler;public findContentThread(Handler sendHandler,String string){queryKeyString = string;handler = sendHandler;}public void run(){Log.v("findContentThread threadId:", String.valueOf(Thread.currentThread().getId()));Message msgMessage = new Message();Bundle bundle = new Bundle();bundle.putString("res", queryKeyString);msgMessage.setData(bundle);msgMessage.what = 0;handler.sendMessage(msgMessage);super.run();}}

  在这里用了扩展Thread的方法,处理之后handler会传回消息,之后就在handler里处理消息了。

然后里面打印了线程ID,从其中可以确定的确是在不同的线程里执行的。

更多相关文章

  1. SpringBoot 2.0 中 HikariCP 数据库连接池原理解析
  2. 关于android消息处理的个人理解
  3. android中的jstack,看看线程都在干嘛
  4. android toast使用总结
  5. Android(安卓)面试之某些公司的面试题
  6. handler.post 运用
  7. Android的线程和线程池(一)
  8. android 之 Androidpn 消息推送总结
  9. Android开发历程_12(Handler的使用)

随机推荐

  1. sql 判断字符串中是否包含数字和字母的方
  2. SQLServer中bigint转int带符号时报错问题
  3. 谈谈sqlserver自定义函数与存储过程的区
  4. 深入分析SqlServer查询计划
  5. sql语句中单引号嵌套问题(一定要避免直接
  6. SqlServer2012中LEAD函数简单分析
  7. SqlServer2012中First_Value函数简单分析
  8. sql server 2000数据库备份还原的图文教
  9. 教你如何看懂SQL Server查询计划
  10. SQL命令优化需要记住的9点事项