这个问题可以由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. SQL Server使用WITH AS递归查找

    很多时候我们会在数据库表中存储树结构的数据,如菜单:一级菜单.二级菜单.三级菜单... 如果树结构层次比较多,如何能够在只知道某节点的情况下,找到此节点下的所有子级数据呢? 在.NET后台可以定义一个 ...

  2. Shodan!

    Shodan! 简介 首先先介绍一下Shodan CNNMoney的一篇文章写道,虽然目前人们都认为谷歌是最强劲的搜索引擎,但Shodan才是互联网上最可怕的搜索引擎. 与谷歌不同的是,Shodan不 ...

  3. 原生js显示分页效果

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  4. 使用tornado的gen.coroutine进行异步编程

    在tornado3发布之后,强化了coroutine的概念,在异步编程中,替代了原来的gen.engine, 变成现在的gen.coroutine.这个装饰器本来就是为了简化在tornado中的异步编 ...

  5. HTML5+开发移动app-mui开发示例

    mui 官网:http://dcloudio.github.io/mui/ 说明:希望你可以把官网内容通读一遍,这是以后开发的基础 开始 新建项目 在首页点击新建移动App,如下: 或者在项目管理器内 ...

  6. 自定义input file 属性

    <label class="input"><input title="浏览文件" type="file" />浏览… ...

  7. C#通用类型转换 Convert.ChangeType 转自网络

    static public object ChangeType(object value, Type type) { if (value == null && type.IsGener ...

  8. 安卓、java开发软件官网和相关不错的网站软件下载地址

    java:http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html eclipse:htt ...

  9. 获取一年时间的sql

    select a.day, to_char(a.day, 'day') as dd, 1 as flag,to_char(a.day,'YYYY-MM-DD') from ( SELECT TO_DA ...

  10. HTML+CSS学习笔记 (10) - CSS格式化排版

    文字排版--字体 我们可以使用css样式为网页中的文字设置字体.字号.颜色等样式属性.下面我们来看一个例子,下面代码实现:为网页中的文字设置字体为宋体. body{font-family:" ...