• 解决Handler与Activity同步冲突


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

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

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

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


    作者:KillerLegend
    出处:http://www.cnblogs.com/KillerLegend/
    分享最新的资源,分享个人所得,欢迎关注我的新浪微博
    新浪微博主页:ikey4u
    我的个人博客:www.ikey4u.com
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

     
  • 相关阅读:
    灰度图像的直方图
    两幅图像的融合与叠加
    图像像素基本操作——自然系列滤镜
    图像像素加减乘除操作
    调整图像亮度、对比度、饱和度
    基于BufferedImage的图像滤镜演示
    Java——BufferedImage操作实例
    Java——BufferedImage对象
    Java——绘制五角星
    Java——自定义外部字体文件
  • 原文地址:https://www.cnblogs.com/killerlegend/p/3255930.html
Copyright © 2020-2023  润新知