这个问题可以由Handler的一个子类HandlerThread来解决。

程序参考自Mars老师的Android课程第一季第十五集。

代码以及注释有所改动,如下:

  1. package com.handler.androidhandler02;
  2. import android.app.Activity;
  3. import android.os.Bundle;
  4. import android.os.Handler;
  5. import android.os.HandlerThread;
  6. import android.os.Looper;
  7. import android.os.Message;
  8. public class FirstActivity extends Activity
  9. {
  10. @Override
  11. protected void onCreate(Bundle savedInstanceState)
  12. {
  13. super.onCreate(savedInstanceState);
  14. setContentView(R.layout.activity_first);
  15. //取得HandlerThread对象
  16. HandlerThread handlerThread = new HandlerThread("handlerThead");
  17. handlerThread.start();
  18. //通过HandlerThread对象的getLooper方法取得异步线程(这里自定义为SonHandler)类的对象
  19. SonHandler sonHandler= new SonHandler(handlerThread.getLooper());
  20. //通过已经取得的异步线程类来取得Message对象
  21. Message notice=sonHandler.obtainMessage();
  22. //设置要传递的消息,通过Bundle对象来实现
  23. Bundle b = new Bundle();
  24. b.putString("name","Tom");
  25. notice.setData(b);
  26. }
  27. //  自定义SonHandler需要继承Handler,并且需要重新书写构造方法,第二个构造方法的参数Looper是必须的,这个Looper与上面创建这个类的getLooper()相关
  28. class SonHandler extends Handler
  29. {
  30. public SonHandler(){}
  31. public SonHandler(Looper looper)
  32. {
  33. super(looper);
  34. }
  35. //      下面是错误的写法……
  36. //      public void SonHandler(Looper looper)
  37. //      {
  38. //          super(looper);
  39. //      }
  40. //覆写方法对要处理的Message信息进行处理
  41. @Override
  42. public void handleMessage(Message notice)
  43. {
  44. Bundle  b= notice.getData();
  45. //得到字符串的键值
  46. String name = b.getString("name");
  47. System.out.println(name);
  48. }
  49. }
  50. }

解决Handler与Activity同步冲突的更多相关文章

  1. Android的Handler与Activity线程同步

    假设这里有同一个Runnable对象r. 可能采用的方法有: 第一种: handler.post(r); 实际上这种方法并没有调用线程someThread的start方法,而是直接调用了Runaabl ...

  2. 解决服务器复制中SID冲突问题

    解决服务器复制中SID冲突问题 如果你有多部的主机需要安装,最快的方法是什么?想必就是用像GHOST之类的软件来进行硬盘的复制.当然,如果是安装在虚拟机之中,则需要复制虚拟的硬盘档案即可,以微软的VP ...

  3. 百度地图API详解之事件机制,function“闭包”解决for循环和监听器冲突的问题:

    原文:百度地图API详解之事件机制,function"闭包"解决for循环和监听器冲突的问题: 百度地图API详解之事件机制 2011年07月26日 星期二 下午 04:06 和D ...

  4. Android开发 解决EditText与NestedScrollView 滚动冲突问题

    问题简述 在将EditText套进NestedScrollView的情况下,EditText输入了多行内容后,无法触摸滚动到第一行 问题原因 在将EditText套进NestedScrollView的 ...

  5. use_frameworks!和#use_frameworks!的区别、解决Swift项目中use_frameworks!冲突的问题

    use_frameworks!和#use_frameworks!的区别 转自:https://www.jianshu.com/p/0ae58a477459 1. 用cocoapods 导入swift ...

  6. 改动ScrollView的滑动速度和解决ScrollView与ViewPager的冲突

    话不多说,非常easy,能够从凝视中知道做法,直接上代码: 1.改动ScrollView的滑动速度: public class MyHorizontalScrollView extends Horiz ...

  7. 解决 scp 和rsync 同步失败【rsync error: unexplained error (code 255) at io.c(226) [sender=3.1.2]】

    解决 scp 和rsync 同步失败 报错信息截图: 解决问题的步骤: 1.检查对方的scp和rsync 是否能使用. rsync 在使用的时候,需要客户端和服务端都有rsync工具.scp 和 rs ...

  8. 【Maven】【IDEA】在idea中开发web项目,解决maven的jar包冲突的方法

    在idea中开发web项目,解决maven的jar包冲突的方法 第一步: 先对项目进行 clean ,再进行install 第二步: 出现NoSuchMethodException,ClassNotF ...

  9. AD中如何解决 同一局域网下证书冲突问题

    AD中如何解决  同一局域网下证书冲突问题 https://wenku.baidu.com/view/c20e1720482fb4daa58d4b52.html

随机推荐

  1. DIH

    DIH内存溢出: 在使用DIH时,容易报内存溢出错误.可以通过设置jvm大小来解决.设置方法如下: 在tomcat\bin\startup.bat 加入SET JAVA_OPTS=-Xms128m - ...

  2. Oracle基础 PL-SQL编程基础(1) 变量和常量

    一.什么是PL-SQL PL-SQL是结合了Oracle过程语言和结构化查询语言(SQL)的一种扩展语言.具体来说,PL-SQL就是在普通的SQL语句的基础上增加了编程语言的特点,将数据操作和查询语句 ...

  3. 20145102 《Java程序设计》第4周学习总结

    20145102 <Java程序设计>第4周学习总结 教材学习内容总结 面向对象中,子类继承父类,避免重复的行为定义,不过并非为了避免重复定义行为就使用继承.如果正确判断使用继承的时机,以 ...

  4. Javascript -- toFixed()函数

    Javascript——toFiexed()函数 1. toFixed(n) 限制小数点后位数,四舍五入.n:0~20 . 2. 作用对象必须是number,不能为其他类型.如(8.001).toFi ...

  5. 开启Microsoft SQL Management时,如果出现"未能加载包

    Ms Sql server 2005在开启Microsoft SQL Management时,如果出现"未能加载包“Microsoft SQL Management Studio Packa ...

  6. MongoDB - MongoDB CRUD Operations, Query Documents, Project Fields to Return from Query

    By default, queries in MongoDB return all fields in matching documents. To limit the amount of data ...

  7. Part 89 to 91 Talking about pass the parameters in thread

    Part 89   ParameterizedThreadStart delegate Use ParameterizedThreadStart delegate to pass data to th ...

  8. c++错误修复 数据库无法打开 无法右击 run outtiime

    先前有安装vs2015失败的前提 现象:1.无法右击  显示 explorer.exe   c++        run outtiime  这些字样 2. 安装有数据库的软件都不能用.显示数据库连接 ...

  9. 批处理脚本修改hosts文件指定域名解析IP

    现在很多网站都是前后台分开部署的,这样做是相对安全的.就算黑客拿到了前台shell也找不到后台的管理地址,增加安全性. 大家应该知道hosts文件的功能吧,用户在访问网站的时候 需要把域名解析成IP地 ...

  10. 检测是否支持HTML5中的Video标签

    //检测是否支持HTML5 function checkVideo() { if (!!document.createElement('video').canPlayType) { var vidTe ...