博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android Handler Demo
阅读量:4501 次
发布时间:2019-06-08

本文共 6792 字,大约阅读时间需要 22 分钟。

主源文件:

package com.example.handlerdemo;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.app.Activity;import android.view.Menu;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.EditText;import android.widget.Toast;public class MainActivity extends Activity {    private Button mHandlerBtn;    private Button mUpdateUIBtn;    private Button mTransDataBtn;    private Button mRunBtn;    private Button mPostDelayButton;    private EditText mEdit;    private Handler mHandler;    private Handler mHandlerData;    private Handler mHandlerrun;    private Handler mPostDelayHandler;    private Message msg = new Message();    private RunThread TestThread;    private int cnt = 10;    class RunThread implements Runnable {        @Override        public void run() {            // TODO Auto-generated method stub            try {                while (true) {                    //send this message every 1 seconds                    Thread.sleep(1000);                    cnt++;                    Bundle b = new Bundle();                    b.putLong("cnt", cnt);                    Message mssg = new Message();                    mssg.setData(b);                    mHandlerrun.sendMessage(mssg);                }            } catch (InterruptedException e) {                // TODO Auto-generated catch block                e.printStackTrace();            }        }    }    class HandlerRunMessage extends Handler {        @Override        public void handleMessage(Message msg) {            // TODO Auto-generated method stub            super.handleMessage(msg);            Bundle b = new Bundle();            b = msg.getData();            mEdit.setText("number : " +String.valueOf(b.getLong("cnt")));        }    }    class HandlerMessage extends Handler {        @Override        public void handleMessage(Message msg) {            // TODO Auto-generated method stub                        //update ui            switch (msg.what) {            case 0:                mEdit.setText("update ui ...");                Toast.makeText(MainActivity.this, "update ui",                        Toast.LENGTH_SHORT).show();                break;            case 1:                Toast.makeText(MainActivity.this, "msg : " + 1,                        Toast.LENGTH_SHORT).show();                System.out.println("send message ok ...");            default:                break;            }            super.handleMessage(msg);        }    }    class HandleDataMessage extends Handler {        @Override        public void handleMessage(Message msg) {            // TODO Auto-generated method stub            super.handleMessage(msg);            Bundle b = msg.getData();            mEdit.setText(b.getCharSequence("content"));        }    }        class PostDelayHandleMessage extends Handler{        @Override        public void handleMessage(Message msg) {            // TODO Auto-generated method stub            super.handleMessage(msg);                        switch(msg.what){            case 0:                Toast.makeText(MainActivity.this, "post delay successfully", Toast.LENGTH_SHORT).show();                break;            }                    }            }    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);                mHandler = new HandlerMessage();        mHandlerData = new HandleDataMessage();        mHandlerrun = new HandlerRunMessage();                mPostDelayHandler=new PostDelayHandleMessage();                        mPostDelayButton=(Button)findViewById(R.id.button5);        mPostDelayButton.setOnClickListener(new OnClickListener(){            @Override            public void onClick(View arg0) {                // TODO Auto-generated method stub                final Message msg=new Message();                msg.what=0;                mPostDelayHandler.postDelayed(new Runnable(){                    @Override                    public void run() {                        // TODO Auto-generated method stub                        Toast.makeText(MainActivity.this, "under post ...", Toast.LENGTH_SHORT).show();                        mPostDelayHandler.sendMessage(msg);                                            }                                    }, 2000);            }                    });        mEdit = (EditText) findViewById(R.id.editText1);        TestThread = new RunThread();        new Thread(TestThread).start();        mRunBtn = (Button) findViewById(R.id.button4);        mRunBtn.setOnClickListener(new OnClickListener() {            @Override            public void onClick(View v) {                // TODO Auto-generated method stub//                Bundle b = new Bundle();//                b.putLong("cnt", cnt);//                mHandlerrun.sendMessage(msg);            }        });        mTransDataBtn = (Button) findViewById(R.id.button3);        mTransDataBtn.setOnClickListener(new OnClickListener() {            @Override            public void onClick(View v) {                // TODO Auto-generated method stub                Bundle bd = new Bundle();                // bd.putCharSequence("content", "transfer data ok !");                bd.putString("content", "transfer data OK !");                msg.setData(bd);                mHandlerData.sendMessage(msg);            }        });        mUpdateUIBtn = (Button) findViewById(R.id.button2);        mUpdateUIBtn.setOnClickListener(new OnClickListener() {            @Override            public void onClick(View arg0) {                // TODO Auto-generated method stub                msg.what = 0;                mHandler.sendMessage(msg);            }        });        mHandlerBtn = (Button) findViewById(R.id.button1);        mHandlerBtn.setOnClickListener(new OnClickListener() {            @Override            public void onClick(View arg0) {                // TODO Auto-generated method stub                new Thread(new Runnable() {                    @Override                    public void run() {                        // TODO Auto-generated method stub                        msg.what = 1;                        mHandler.sendMessage(msg);                    }                }).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.main, menu);        return true;    }}

xml文件:

利用Handler发送数据信息,更新UI,延时处理事务...

 

转载于:https://www.cnblogs.com/MMLoveMeMM/articles/3603360.html

你可能感兴趣的文章
Hibernate入门之关系篇:多对一和一对多映射
查看>>
FFmpeg 在Windows的命令
查看>>
Stone(思维)
查看>>
高德定位获取省市区[记录]
查看>>
python 自动发送邮件遇到的问题
查看>>
关于“using namespace std”
查看>>
数据可视化(Echart) :柱状图、折线图、饼图等六种基本图表的特点及适用场合...
查看>>
IDEA 报错记录
查看>>
Yii中validator之scenario
查看>>
ie11兼容
查看>>
deprecated conversion from string constant to 'char*''
查看>>
(二)scala构造器和伴生对象
查看>>
MVC中使用RemoteAttribute异步远程验证
查看>>
ROP----The Solution For Ret2shellcode
查看>>
6 个设计原则分别是什么?每种设计原则体现的设计模式是哪个?
查看>>
js判断字符串是否有重复
查看>>
mac 安装ant
查看>>
图层混合模式之正片叠底、滤色
查看>>
环信java后台发送消息时提示msg 应该为JSONObject 的坑
查看>>
Delphi中TStringList类常用属性方法详解
查看>>