当前位置: 首页 > news >正文

成都创新网站建设有什么网站可以免费建站

成都创新网站建设,有什么网站可以免费建站,怎么做网站的地图页,怎么在广西建设厅网站注销c证转http://www.iteye.com/problems/69457Activity启动后点击一个界面按钮后会开启一个服务(暂定为padService)#xff0c;在padService中会启动一个线程(暂定为Thread-3)发起Socket连接。我们项目中使用mina作为socket通信框架#xff0c;用过mina的同志们应该熟悉#xff0c…转http://www.iteye.com/problems/69457Activity启动后点击一个界面按钮后会开启一个服务(暂定为padService)在padService中会启动一个线程(暂定为Thread-3)发起Socket连接。我们项目中使用mina作为socket通信框架用过mina的同志们应该熟悉Thread-3只是负责监听具体的消息处理是另外的线程。在我们的IoHandler中处理消息现在的问题是我需要在IoHander的sessionOpened方法中给Activity一个消息去更新UI界面这个就涉及到不同线程间的通信了。网上搜索后在android中线程间通信使用HandlerLooperMessage这几个对象(不熟悉这些概念的同志们请自己查下)。这是网上的一个使用例子Java代码publicclassActivity2 extendsActivity implementsOnClickListener{Button button  null;TextView text  null;MyHandler mHandler  null;Thread thread ;OverrideprotectedvoidonCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity1);button  (Button)findViewById(R.id.btn);button.setOnClickListener(this);text  (TextView)findViewById(R.id.content);}publicvoidonClick(View v) {switch(v.getId()) {caseR.id.btn:thread  newMyThread();thread.start();break;}}privateclassMyHandler extendsHandler{publicMyHandler(Looper looper){super(looper);}OverridepublicvoidhandleMessage(Message msg) {//处理消息text.setText(msg.obj.toString());}}privateclassMyThread extendsThread{Overridepublicvoidrun() {Looper curLooper  Looper.myLooper();Looper mainLooper  Looper.getMainLooper();String msg ;if(curLoopernull){mHandler  newMyHandler(mainLooper);msg  curLooper is null;}else{mHandler  newMyHandler(curLooper);msg  This is curLooper;}mHandler.removeMessages(0);Message m  mHandler.obtainMessage(1, 1, 1, msg);mHandler.sendMessage(m);}}}这个没有问题基本上三个对象的使用也很清楚myHandler虽然是由子线程new出来的但主线程持有引用在我们的项目中不能用因为我们几个线程属于不同的类我尝试用下面的方法解决在IoHandler中new一个android的handler参数为主线程的LooperJava代码newHandler(Looper.getMainLooper()).sendMessage(msg);IoHandler所在的线程给主线程发送消息(looper是主线程的消息也就放在主线程的消息队列里了)但是在主线程的handleMessage方法中得不到消息尝试失败。那么怎么办呢让IoHandler持有主线程的handler引用具体做法有两种方式1.  参数传递把主线程的handler通过参数传递的形式传到IoHandler中。2. 静态变量把主线程的handler申明为公共静态变量Java代码publicstaticHandler mainHandler;这样在Iohandler中使用Java代码welcomeActivity.mainHandler.sendMessage(msg);这两种方式在主线程的  handleMessage的方法中都可以得到IoHandler发送的消息。本人使用的是静态变量解决的因为有好几个来实现通信参数传递太麻烦。那为什么我的第一种尝试是失败的呢我是把消息放到主线程的消息队列了啊这就要看android的一些实现机制了。通过网络和android的api本人的理解如下Looper是MessageQueue和Handler沟通的桥梁Handler通过Looper把消息放入消息队列(MessageQueue)你想把消息发给谁就把谁的looper作为参数传给HandlerJava代码newHandler(Looper looper);Looper把消息放入消息队列并广播消息这个不太好理解我举例如下主线程的Handler我们这样定义Handler mainHandler new Handler();  如果Handler没有参数默认为当前线程的Looper子线程的Handler我们这样定义 Handler subHandler newHandler(Looper.getMainLooper()); 参数为主线程的Looper这样两个线程都会把消息放入主线程的消息队列里了。现在mainHandler.sendMessage(), 消息进入主线程的消息队列Looper广播消息其实就是调用mainHandler的dispatchMessage方法所有持有mianHandler引用的类都可以收到消息注意啊现在subHandler并不能接受到消息因为Looper并没有调用subHandler的dispatchMessage方法所以应该这样理解广播A发送消息那么A的Looper就调用A的dispatchMessage方法别的BC D虽然也是A的Looper但没有A的引用所以BCD是接受不到消息的如果B, C,D持有A的引用但B,C,D不用A的Looper那么也是接受不到消息的。这点在开发时要特别注意。以上是我在使用Looper Handler Message中的一些问题可能有理解错的地方请大大们指出来。我的疑惑是难道子线程必须持有主线程的引用才可以给主线程发送消息吗要知道我们的子线程并不一定和主线程一个类可能在别的类中这个引用传递实在太麻烦了期望有更好的解决方式。
http://wiki.neutronadmin.com/news/24284/

相关文章:

  • 河南省建设工程质监总站网站织梦和wordpress能共存
  • 普通人怎么样做网站设计公司灰白色调网站
  • wdcp网站迁移接效果图做网站
  • 几百的网站网站ui升级怎么做
  • 建教会网站的内容广告制作简介
  • wordpress 2013如何进行网站性能优化?
  • 网站建设支付赣州网站优化
  • php可以做网站吗凡科做网站
  • 如何做网站弹窗广告华为云云速建站怎样
  • 个人不良信息举报网站电子商务网站建设参考文献2018
  • 公司变更名字需要什么手续十堰seo公司
  • 帝国网站后台认证码错误商务网站建设的应用
  • 做购买网站网站建设交付物清单
  • 做公众号的网站有哪些功能wordpress获取tag地址
  • 阿里巴巴网站建设基础服务wordpress安装主题ftp
  • 深圳哪家公司需要网站建设的网站开发为什么采取ssh框架
  • 专注营销型网站建设公司 做网站网站 空间 备案
  • 正能量网站ip手机如何创造网站
  • 网站企划设计公司wordpress 手机菜单栏插件
  • 汝阳县建设局网站做娱乐网站少10个页面
  • 天津市建设银行网站上海十大跨境电商排名
  • 网站动画用什么做的阿里云WordPress应用php升级
  • 丹东市做网站医疗网站建设服务
  • 谷歌官方网站首页怎么做网站的api
  • 企业活动网站创意案例wordpress内链添加位置
  • 网站内容如何编辑软件面签拍照 网站备案
  • 道滘东莞网站建设优化关键词排名软件
  • 网站服务器内网打不开网页跨境电商多平台运营
  • 做百度网站dz网站模板
  • 小型网站建设案例杭州做网站