使用Handler的步骤

1. 在Activity中定义Handler并实现handleMessage方法用来处理接收到的消息。

2. 定义一个Runable实例,并在run方法中设置和发送消息(使用Bundle实现)

3. 新建一个Thread并运行步骤2中的Runable。调用Thread.start().

完整代码

public class MainActivity extends AppCompatActivity {
    Handler handler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            // Get message from another thread.
            String msgStr = msg.getData().getString("msg");
            Toast.makeText(MainActivity.this, msgStr, Toast.LENGTH_SHORT).show();
        }
    };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    public void buttonClick(View view) {
        Runnable runnable = new Runnable() {
            @Override
            public void run() {
                Bundle bundle = new Bundle();
                bundle.putString("msg", "Hello, world");

                // Send the message to main thread.
                Message msg = handler.obtainMessage();
                msg.setData(bundle);
                handler.sendMessage(msg);
            }
        };

        Thread myThread = new Thread(runnable);
        myThread.start();
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }
}

==

时间: 2024-11-15 00:34:51

使用Handler的步骤的相关文章

获取内核当前执行模块和当前发生异常地址和线程异常Handler调用步骤

循环每个内核模块 统计模块大小 判断触发异常的地址属于那个模块.来确定模块 获取发生异常地址 nt!_EXCEPTION_RECORD +0x000 ExceptionCode : -2139160568 +0x004 ExceptionFlags : 0x807fa938 +0x008 ExceptionRecord : 0x00010000 _EXCEPTION_RECORD +0x00c ExceptionAddress : 0x807fa340 +0x010 NumberParamete

Handler处理机制

handler缺点:如果要运送两种类型的数据(比如一个Bitmap,一个Object)就不能运送,但可以用Bunder来传输 *    使用handler的步骤: *    1.创建一个handler *    2.在需要用到数据传输的地方通过handler得到message对象,通过message携带要传输的数据 *    3.直接通过handler发送消息到主线程 *    4.在主线中通过重写handlerMessage,接收传输过来的数据 如果在onCreate启动的子线程做的操作不耗时

nginx -- handler模块(100%)

handler模块简介 相信大家在看了前一章的模块概述以后,都对nginx的模块有了一个基本的认识.基本上作为第三方开发者最可能开发的就是三种类型的模块,即handler,filter和load-balancer.Handler模块就是接受来自客户端的请求并产生输出的模块.有些地方说upstream模块实际上也是一种handler模块,只不过它产生的内容来自于从后端服务器获取的,而非在本机产生的. 在上一章提到,配置文件中使用location指令可以配置content handler模块,当Ng

.NET MVC页面生命周期及传统ASP.NET页面周期

目前我主要使用.Net MVC框架进行网页创建,数据库是MSSQL Server.所以,我就用.NET MVC框架的web页面周期来说明页面的生命周期,但是我觉着其他MVC框架也是大同小异的. 本文主要分两个部分 一..NET MVC的网页生命周期 二.普通ASP.NET的网页生命周期 一..NET MVC的网页生命周期 ASP.NET MVC请求从开始到结束的每一个过程,在浏览器输入URL并敲击回车来请求一个ASP.Net MVC网站的页面之后发生的任何事情,都是页面的生命周期的一部分. 为什

ASP.NET运行时详解 中篇

遗留问题 在ASP.NET运行时详解 上篇中遗留两个问题,包括Application的InitInternal方法执行细节.IIS6和II7经典模式请求管道管理类ApplicationStepManager和IIS7请求管道管理类PipelineStepManager的实现细节.这两个问题贯穿了整个ASP.NET运行过程.所以,要把ASP.NET运行过程了解清楚,这两个问题不得不解决.    为了大家更容易切入该篇的内容,我们先回顾下这两个问题: 1. Application的InitInter

ASP.NET MVC 简介

1. ASP.NET MVC 是什么? ASP.NET MVC是微软官方提供的以MVC模式为基础的ASP.NET Web应用程序(Web Application)框架,它由Castle的MonoRail而来,日前最新版本是ASP.NET MVC 4.0.是将一个Web应用分解为:Model.View和Controller.ASP.NET MVC框架提供了一个可以代替ASP.NET WebForm的基于MVC设计模式的应用. MVC的优点: (1).通过把项目分成Model.View和Contro

详解ASP.NET MVC的请求生命周期

本文的目的旨在详细描述asp.net mvc请求从开始到结束的每一个过程. 我希望能理解在浏览器输入url并敲击回车来请求一个asp.net mvc网站的页面之后发生的任何事情. 为什么需要关心这些?有两个原因.首先是因为asp.net mvc是一个扩展性非常强的框架.例如,我们可以插入不同的viewengine来控制网站内容呈现的方式.我们还可以定义控制器生成和分配到某个请求的 方式.因为我想发掘任何asp.net mvc页面请求的扩展点,所以我要来探究请求过程中的一些步骤. 其次,如果你对测

android之网络编程

注意: (1)主线程不能够做耗时的操作,网络请求就是耗时的操作需要放到子线程做. (2)子线程不能更新控件的内容(更新Ui).所以产生了矛盾,解决办法就是使用Handler(处理消息机制). Handler:消息机制的写法(重要)  使用Handler的步骤: 1.主线程中创建一个Handler private Handler handler = new Handler(){ public void handleMessage(android.os.Message msg) { }; }; 2.

Android消息处理

Android事件处理的两种模式    基于监听的事件处理   事件源Event Source, 事件Event, 事件监听器Event Listener, 事件源将事件委托给事件监听器,由事件监听器对事件进行响应处理.   SetXXXListener() 基于回调的事件处理 都有一个boolean的返回值,决定事件是否继续向下传播 extends button/Activity/View 实现响应组件的方法,例如:onKeyDown(), onTouchEvent() 在布局文件中绘制相应组