• Handler的使用


    package com.example.wang.testapp2;
    
    import android.os.Bundle;
    import android.os.Handler;
    import android.os.Message;
    import android.support.v7.app.AppCompatActivity;
    import android.view.View;
    import android.widget.Button;
    import android.widget.TextView;
    import android.widget.Toast;
    
    import java.util.Random;
    
    
    public class TestActivity6 extends AppCompatActivity {
    
        TextView tv_3,tv_5;
        TextView tv_4,tv_6;
    
        Button bt_4,bt_5,bt_3;
    
        //定义 Handler,Handler在子线程里发消息,在主线程里处理消息,所以需要定义为全局变量
    
        Handler h=new Handler(){
            @Override
            public void handleMessage(Message msg) {
                super.handleMessage(msg);
    
                //处理消息
                if (msg.what==1)
                {
                    String m=msg.obj.toString();
    
                    tv_5.setText(tv_5.getText()+" "+m);
                }
                if (msg.what==2)
                {
                    tv_5.setText(tv_5.getText()+" 空消息");
                }
            }
        };
    
        int i=10;
        Handler hl=new Handler()
        {
            @Override
            public void handleMessage(Message msg) {
                super.handleMessage(msg);
    
    
    
                switch (msg.what)
                {
                    case 1:
    
                        if (i==20)
                        {
                            bt_3.setEnabled(false);
                            bt_5.setEnabled(false);
                            return;
                        }
                        i++;
                        tv_6.setText(i + "");
    
                        //发送
                        hl.sendEmptyMessageDelayed(1, 1000);
                        hl.removeMessages(2);
    
                        bt_3.setEnabled(false);
                        bt_4.setEnabled(true);
                        bt_5.setEnabled(true);
    
                        break;
    
                    case 2:
                        if (i==1)
                        {
                            bt_4.setEnabled(false);
                            bt_5.setEnabled(false);
                            return;
                        }
                        i--;
                        tv_6.setText(i + "");
    
                        //发送
                        hl.sendEmptyMessageDelayed(2, 1000);
    
                        hl.removeMessages(1);
                        bt_3.setEnabled(true);
                        bt_4.setEnabled(false);
                        bt_5.setEnabled(true);
    
                        break;
    
                    case  3:
    
                        hl.removeMessages(1);
                        hl.removeMessages(2);
                        bt_3.setEnabled(true);
                        bt_4.setEnabled(true);
                        bt_5.setEnabled(false);
                        break;
                }
            }
        };
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_test6);
    
            tv_3=(TextView)findViewById(R.id.tv_3);
            tv_4=(TextView)findViewById(R.id.tv_4);
            tv_5=(TextView)findViewById(R.id.tv_5);
            tv_6=(TextView)findViewById(R.id.tv_6);
    
            bt_4=(Button)findViewById(R.id.bt_4);
    
            bt_5=(Button)findViewById(R.id.bt_5);
    
            bt_3=(Button)findViewById(R.id.bt_3);
    
    
            bt_5.setEnabled(false);
        }
    
        public void bt3_OnClick(View v)
        {
            switch (v.getId())
            {
                case R.id.bt_3:
    
                    //发送增加的消息
                    hl.sendEmptyMessage(1);
                    break;
    
                case R.id.bt_4:
    
                    //发送减少的消息
                    hl.sendEmptyMessage(2);
    
                    break;
                case R.id.bt_5:
    
                    //发送暂停的消息
                    hl.sendEmptyMessage(3);
    
                    break;
                    //default:
            }
        }
    
        public void bt2_OnClick(View v)
        {
            //启动线程
            new Thread(){
                @Override
                public void run() {
    
                    //发送消息
    
                    //1-创建Message
                    Message m=Message.obtain();
                    m.what=1;
                    m.obj="新信息1";
    
                    //2-发送即时消息
                    h.sendMessage(m);
    
                    //发送延时消息
                    m=Message.obtain();
                    m.what=1;
                    m.obj="新消息2";
                    h.sendMessageDelayed(m,2000);
    
                    //发送空消息
                    h.sendEmptyMessage(2);
    
                    //发送延时空消息
                    h.sendEmptyMessageDelayed(2,3000);
                }
            }.start();
        }
    
    
    
        public void  bt1_OnClick(View v) {
            //创建子线程1
    
            new Thread() {
    
                @Override
                public void run() {
    
                    for (int i = 0; i < 10; i++)
                    {
                        try {
                            //暂停一下,时间随机
                            Thread.sleep(new Random().nextInt(2000));
                        } catch (Exception e) {}
    
                        runOnUiThread(new Runnable() {
                            @Override
                            public void run() {
                                tv_3.setText(tv_3.getText()+" 北京");
                            }
                        });
    
    
                    }
                      runOnUiThread(new Runnable() {
                          @Override
                          public void run() {
                              Toast.makeText(TestActivity6.this,  "北京 循环结束", Toast.LENGTH_SHORT).show();
                          }
                      });
                }
    
            }.start();
    
            new Thread(new Runnable() {
                @Override
                public void run() {
                    for (int i = 0; i < 10; i++)
                    {
                        runOnUiThread(new Runnable() {
                            @Override
                            public void run() {
                                tv_4.setText(tv_4.getText()+" 上海");
                            }
                        });
    
                        try {
                            //暂停一下,时间随机
                            Thread.sleep(new Random().nextInt(2000));
                        } catch (Exception e) {}
                    }
                    runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                            Toast.makeText(TestActivity6.this, "上海 循环结束", Toast.LENGTH_SHORT).show();
                        }
                    });
                }
            }).start();
        }
    
    }
    java
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:paddingBottom="@dimen/activity_vertical_margin"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:paddingTop="@dimen/activity_vertical_margin"
        tools:context="com.example.wang.testapp2.TestActivity6"
        android:orientation="vertical">
    
        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="北京"
            android:id="@+id/tv_3"/>
    
        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="上海"
            android:id="@+id/tv_4"/>
    
        <Button
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="启动"
            android:onClick="bt1_OnClick"/>
    
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/tv_5"
            android:text="接收的消息"/>
        <Button
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="发消息"
            android:onClick="bt2_OnClick"/>
    
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/tv_6"
            android:text="10"
            android:layout_gravity="center"/>
    
            <Button
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="增加"
                android:onClick="bt3_OnClick"
                android:id="@+id/bt_3"/>
            <Button
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="减少"
                android:onClick="bt3_OnClick"
                android:id="@+id/bt_4"/>
            <Button
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="暂停"
                android:onClick="bt3_OnClick"
                android:id="@+id/bt_5"/>
    
    
    
    </LinearLayout>
    xml

  • 相关阅读:
    STL之map UVa156
    STL之vector UVa101
    STL之set UVa10815
    无修改区间查询 BNU Can you answer these queries I
    区间修改点查询 HDU1556
    无废话ExtJs 入门教程九[数字字段:NumberField、隐藏字段Hidden、日期字段:DataFiedl]
    无废话ExtJs 入门教程七[登陆窗体Demo:Login]
    无废话ExtJs 入门教程六[按钮:Button]
    无废话ExtJs 入门教程五[文本框:TextField]
    无废话ExtJs 入门教程四[表单:FormPanel]
  • 原文地址:https://www.cnblogs.com/wangchuanqi/p/5499943.html
Copyright © 2020-2023  润新知