handler处理机制

来源:互联网 发布:java替换文本文件内容 编辑:程序博客网 时间:2024/06/08 18:15
Handler 处理机制
    关键字:Handler 处理机制,系统已经定义好的方法
                1.sendMessage(Message message) 发送信息
                2.handleMessage (Message message)处理信息
            Message 信息,作为1 与 2 之间传递的桥梁
            arg1 整数传递的媒介,用来确定选择处理方式
            obj  对象传递,可以是任意信息
    public class Post_Activity extends AppCompatActivity {

    public TextView mtextview;
    public Handler mhandler;
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_post_layout);

        mtextview = (TextView) findViewById(R.id.post_Textview);

        mhandler = new Handler(){
            public void handleMessage(Message message){
                int type = message.arg1;
                switch (type){
                    case 0:
                        Intent intent = new Intent(Post_Activity.this, SeconedLaunchActivity.class);
                        startActivity(intent);
                        finish();// TODO: 2016/6/12 finish()方法保证退出时不再进入当前页面
                        break;
                    case 1:
                        String count = (String) message.obj;
                        mtextview.setText(count);
                        break;
                }
            }
        };

        new Thread(new Runnable() {
            int count;
            public void run() {
                for(count=4;count>=1;count--){
                    Message msg = Message.obtain();
                    msg.arg1 = 1; // TODO: 2016/6/12 arg1 传递整数,用来判断类型
                    msg.obj = count+"";
                    mhandler.sendMessage(msg);

                    SystemClock.sleep(1000);
                }
            }
        }).start();
        // TODO: 2016/6/12  调用post(Runnable r)不会开启一个新的线程,子线程中发送了消息到主线程的消息队列从而更新了UI.
        mhandler.postDelayed(new Runnable() {
            @Override
            public void run() {
                Message msg = Message.obtain();
                msg.arg1 = 0;
                mhandler.sendMessage(msg);

            }
        },4000);

    }
}

中间的数字数Textview用来设定倒计时的

0 0