handler更新ui线程的基本用法

Posted layfork

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了handler更新ui线程的基本用法相关的知识,希望对你有一定的参考价值。

1.因为费时操作要放子线程,更新UI要放UI线程(主线程),所以子线程和主线程通信,通信的话要用到handler这个东西。

这里讲的比较简单,举2个例子说明

2.使用post的是handler ,使用message的是handler2

public class MainActivity extends AppCompatActivity {

private TextView textView;
private Handler handler = new Handler();

private Handler handler2=new Handler(){
@Override
public void handleMessage(Message msg) {
switch (msg.what){
case 1:
textView.setText(msg.obj.toString());
}
}
};

Button button;
private static final String TAG = "MainActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

textView =findViewById(R.id.textview);

new Thread(){
@Override
public void run() {
Message message = new Message();
//区分标志
message.what=1;
//传参到ui线程
message.obj=123123;
handler2.sendMessage(message);
}
}.start();


new Thread(){
@Override
public void run() {
handler.post(new Runnable() {
@Override
public void run() {
textView.setText("fjidfjiijisdf");
}
});
}
}.start();
}


}

3. 实例化handler在其他线程的时候要下面这样写

 private Handler handler = new Handler(Looper.getMainLooper());

 

以上是关于handler更新ui线程的基本用法的主要内容,如果未能解决你的问题,请参考以下文章

Android第一行代码--Service(四大组件之一)

Android第一行代码--Service(四大组件之一)

异步数据处理Handler

Android中AsyncTask基本用法与源码分析(API 23)

Android第一行代码--Service(四大组件之一)

Android Handler 具体解释