Android中Handler的基本使用2

来源:互联网 发布:程序员考试下午真题 编辑:程序博客网 时间:2024/06/06 18:54
 基本原理:
 发消息
 handler.sendMessage(msg);
 收消息

 public void handleMessage(Message msg){}


主要代码:

<pre name="code" class="java"><span style="font-size:18px;">public class MainActivity extends AppCompatActivity {    private TextView tv1;    private Button btn1;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        initView();        myOnclick();    }    /**     * 初始化控件     */    private void initView() {        tv1 = (TextView)findViewById(R.id.tv1);        btn1 = (Button)findViewById(R.id.btn1);    }    /**     * 接受消息     */    private Handler handler = new Handler(){//        接受消息的方法,在其中修改界面        public void handleMessage(Message msg){            switch (msg.what) {//              根据标记1接受空消息                case  1:                    tv1.setText("网络请求成功。。。");                    break;//              根据标记2接受到消息内容                case 2:                    String s= (String) msg.obj;                    Toast.makeText(MainActivity.this, ""+s, Toast.LENGTH_SHORT).show();                    break;//              根据标记3接受到延时空消息                case 3:                    Toast.makeText(MainActivity.this, "空消息接收到了", Toast.LENGTH_SHORT).show();                    break;            }        }    };    /**     * 点击事件     */    private void myOnclick() {        btn1.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {//             子线程中不能修改界面,在主ui线程中修改界面                new Thread(){                    public void run(){                      while(true) {                          try {                              Thread.sleep(3000);                          } catch (InterruptedException e) {                              e.printStackTrace();                          }                          break;                      }//                      模拟请求网络数据完成//                      发送空消息what的值是1,只是个标记                        handler.sendEmptyMessage(1);//                      --------------------------------------//                      发送消息                        Message msg = handler.obtainMessage();//                      标记是2                        msg.what=2;//                      要传递的值,存任何数据类型                        msg.obj="我的消息内容";                        handler.sendMessage(msg);//                      ----------------------------------------//                      延时发送空消息//                      延时1秒后发送                        handler.sendEmptyMessageDelayed(3,1000);                    }                }.start();            }        });    }}</span>





0 0
原创粉丝点击