Android进阶之路

来源:互联网 发布:淘宝的所在地怎么修改 编辑:程序博客网 时间:2024/05/22 00:12

在Android中使用Handler的场景还是非常多的,子线程处理耗时操作,然后反还数据到主线程。

上一篇我们使用的是在主线程进行Handler创建,之后再子线程使用handler进行发送,原理也就是通过Looper.loop的方法轮询信息池,
那么我们这篇要用到的是runOnUiThread()方法的使用,如果问俩者的区别的话,我认为在主线程创建Handler的话,更方便我们后期的维护,因为其更统一化管理,而使用runOnUiThread()的话,有时候却更为方便,废话不多说,一个Demo带给大家,初学者一看便知。

建议俩者一起学习,毕竟代码很少,也很好理解,而且还常用,Handler的使用(一)地址,:
http://blog.csdn.net/qq_20451879/article/details/54347557

MainActivity Code:

package com.example.handlerui;import android.app.Activity;import android.os.Bundle;import android.text.TextUtils;import android.view.View;import android.view.View.OnClickListener;import android.widget.EditText;import android.widget.TextView;import android.widget.Toast;//最终效果,Text显示的数据改变为我们输入的信息public class MainActivity extends Activity {    private TextView mTv;    private EditText mEt;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        mEt = (EditText) findViewById(R.id.et);        mTv = (TextView) findViewById(R.id.tv);        /**         * 子线程获取数据后,渲染到UI          * 1.开启子线程获取数据          * 2.获取数据之后使用runOnUiThread()的方法进行主线程UI渲染         * */        new Thread(new Runnable() {            @Override            public void run() {                mTv.setOnClickListener(new OnClickListener() {                    private String data;                    @Override                    public void onClick(View v) {                        data = mEt.getText().toString();                        if (TextUtils.isEmpty(data)) {                            Toast.makeText(MainActivity.this, "请输入信息", 0)                                    .show();                        } else {                            runOnUiThread(new Runnable() {                                public void run() {                                    mTv.setText(data);                                }                            });                        }                    }                });            };        }).start();    }}

MainAcitivity Xml:

<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:orientation="vertical"    tools:context=".MainActivity" >    <EditText          android:layout_width="match_parent"        android:layout_height="wrap_content"        android:id="@+id/et"        />    <TextView        android:id="@+id/tv"        android:gravity="center"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:text="UIThread使用" /></LinearLayout>
0 0
原创粉丝点击