Android开发中在线程(非主线程)中更改视图

来源:互联网 发布:stddev sqlserver 编辑:程序博客网 时间:2024/06/09 06:50

第一种:使用Activity中的 runOnUIThread(Runable run) 函数

public class MainActivity extends AppCompatActivity {    private TextView textView = null;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        textView = (TextView) findViewById(R.id.textView);        //非主线程        new Thread(){            @Override            public void run() {                MainActivity.this.runOnUiThread(new Runnable() {                    @Override                    public void run() {                        textView.setText("Hello World!!!");                    }                });            }        }.start();    }}

第二种:使用Handle

public class MainActivity extends AppCompatActivity {    private TextView textView = null;    private Handler handler = new Handler(){        @Override        public void handleMessage(Message msg) {            textView.setText("Hello World!!!");        }    };    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        textView = (TextView) findViewById(R.id.textView);        //非主线程        new Thread(){            @Override            public void run() {                Message msg = new Message();                handler.sendMessage(msg);            }        }.start();    }}

第三种:使用View类中的 post(Runable run) 函数

public class MainActivity extends AppCompatActivity {    private TextView textView = null;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        textView = (TextView) findViewById(R.id.textView);        //非主线程        new Thread(){            @Override            public void run() {                textView.post(new Runnable() {                    @Override                    public void run() {                        textView.setText("Hello World!!!");                    }                });            }        }.start();    }}