Android Handler简单示例

package com.firstapp.foo.firstapp;

import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.widget.Button;
import android.widget.ProgressBar;
import android.widget.TextView;

import java.util.Date;

public class ThreadDemoActivity extends AppCompatActivity {
    private static final String TAG = "foo";
    private ProgressBar bar;
    private Button btnStartThread;
    private TextView tvMsg;

    private Handler handler;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        handler = new MyHandler();
        setContentView(R.layout.activity_thread_demo);
        bar = (ProgressBar)findViewById(R.id.progressBar);
        btnStartThread = (Button)findViewById(R.id.btnStartThread);
        tvMsg = (TextView)findViewById(R.id.tvMsg);

        btnStartThread.setOnClickListener(v -> {
            new Thread(()->{
                for (int i=0; i< 100; i++){
                    bar.setProgress(i);
                    try {
                        Thread.sleep(30);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                    Log.i(TAG, "Thread Info:" + i);
                }

                Bundle bundle = new Bundle();
                bundle.putString("msg","你好");
                // other ...
                Message message = handler.obtainMessage();
                message.what = 2;
                message.setData(bundle);
                handler.sendMessage(message);

                /* 若消息除消息码外,无附加参数,则下面一句更简便 */
                //handler.sendEmptyMessage(2);
            }).start();
        });
    }

    class MyHandler extends  Handler {
        @Override
        public void handleMessage(Message msg) {
            switch (msg.what){
                case 2:
                    Bundle data = msg.getData();
                    String txt = data.getString("msg");

                    tvMsg.setText(txt + ", 线程完成:" + new Date().toString() );
                    break;
            }
        }
    }
}
时间: 2024-08-10 01:58:37

Android Handler简单示例的相关文章

Android Handler简单使用

1 package com.example.myhandlertest3; 2 3 import android.os.Bundle; 4 import android.os.Handler; 5 import android.os.Message; 6 import android.support.v7.app.ActionBarActivity; 7 import android.view.View; 8 import android.view.View.OnClickListener; 9

Android中ProgressDialog的简单示例

网上一般对进度条的示例都是如何显示,没有在任务结束如何关闭的文章,参考其他文章经过试验之后把整套进度条显示的简单示例如下: 建立android工程等工作都略去,Google一下就可以了. 下面来介绍主要的Activity ProgressBarDemo.java Java代码   package com.lveyo.android.demo.progressbar; import android.app.Activity; import android.app.ProgressDialog; i

Android通过startService播放背景音乐简单示例

关于startService的基本使用概述及其生命周期可参见博客<Android中startService的使用及Service生命周期>. 本文通过播放背景音乐的简单示例,演示startService的基本使用流程. 系统界面如下: 界面上面就两个按钮,"播放音乐并退出Activity" 和 "停止播放音乐".我们在该示例中,通过操纵Activity的按钮控制MusicService播放或停止播放音乐. 我将一个名为music.mp3的放到资源目录/r

详解Android Handler的使用

我们进行Android开发时,Handler可以说是使用非常频繁的一个概念,它的用处不言而喻.本文就详细介绍Handler的基本概念和用法. Handler的基本概念         Handler主要用于异步消息的处理:当发出一个消息之后,首先进入一个消息队列,发送消息的函数即刻返回,而另外一个部分逐个的在消息队列中将消息取出,然后对消息进行出来,就是发送消息和接收消息不是同步的处理. 这种机制通常用来处理相对耗时比较长的操作. Handler工具类在多线程中有两方面的应用: 1.发送消息,在

详解Android Handler的使用-别说你不懂handler(转)

我们进行Android开发时,Handler可以说是使用非常频繁的一个概念,它的用处不言而喻.本文就详细介绍Handler的基本概念和用法. Handler的基本概念         Handler主要用于异步消息的处理:当发出一个消息之后,首先进入一个消息队列,发送消息的函数即刻返回,而另外一个部分逐个的在消息队列中将消息取出,然后对消息进行出来,就是发送消息和接收消息不是同步的处理. 这种机制通常用来处理相对耗时比较长的操作. Handler工具类在多线程中有两方面的应用: 1.发送消息,在

详解Android Handler的使用-别说你不懂handler

我们进行Android开发时,Handler可以说是使用非常频繁的一个概念,它的用处不言而喻.本文就详细介绍Handler的基本概念和用法. Handler的基本概念         Handler主要用于异步消息的处理:当发出一个消息之后,首先进入一个消息队列,发送消息的函数即刻返回,而另外一个部分逐个的在消息队列中将消息取出,然后对消息进行出来,就是发送消息和接收消息不是同步的处理. 这种机制通常用来处理相对耗时比较长的操作. Handler工具类在多线程中有两方面的应用: 1.发送消息,在

android Handler的使用(一)

Handler的使用(一) Handler基本概念: Handler主要用于异步消息的处理:当发出一个消息之后,首先进入一个消息队列,发送消息的函数即刻返回,而另外一个部分逐个的在消息队列中将消息取出,然后对消息进行出来,就是发送消息和接收消息不是同步的处理. 这种机制通常用来处理相对耗时比较长的操作. 使用一个例子简单的来介绍一下Handler. 示例1:一个应用程序中有2个按钮(start.end),当点击start按钮时,执行一个线程,这个线程在控制台输出一串字符串,并且每隔3秒再执行一次

spring-servlet.xml简单示例

spring-servlet.xml简单示例 某个项目中的spring-servlet.xml 记下来以后研究用 1 <!-- springMVC简单配置 --> 2 <?xml version="1.0" encoding="UTF-8"?> 3 <beans xmlns="http://www.springframework.org/schema/beans" 4 xmlns:xsi="http://w

Android Handler Message总结

当应用程序启动时,会开启一个主线程(也就是UI线程),由她来管理UI,监听用户点击,来响应用户并分发事件等.所以一般在主线程中不要执行比较耗时的操作,如联网下载数据等,否则出现ANR错误.所以就将这些操作放在子线程中,但是由于AndroidUI线程是不安全的,所以只能在主线程中更新UI.Handler就是用来 子线程和创建Handler的线程进行通信的. Handler的使用分为两部分:  一部分是创建Handler实例,重载handleMessage方法,来处理消息. [java] view