Android开发学习之路-使用Handler和Message更新UI
最后更新 2021-02-12 14:28 星期五 所属:
安卓教程 浏览:542
在Android中,在非主线任务程中升级UI控制是不安全的,app在运作的时候会立即Crash,因此 在我们必须在非主线任务程中升级UI控制,那麼就必须采用Handler和Message来完成
Demo中,应用到一个按键和一个TextView,点一下按键以后更改TextView的內容,按键点一下情况下新创建一个过程,在过程中对UI控制开展改动。
public class MainActivity extends Activity implements OnClickListener { private static final int UPDATE_TEXT = 1; private Button send; private TextView tv; private Handler hd = new MyHandler(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); send = (Button) findViewById(R.id.bt_sendMessage); tv = (TextView) findViewById(R.id.tv_text); send.setOnClickListener(this); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.bt_sendMessage: new Thread(new Runnable() { @Override public void run() { // 新创建一个进程,并新创建一个Message的目标,是用Handler的目标推送这一Message Message msg = new Message(); msg.what = UPDATE_TEXT; // 客户自定的一个值,用以标志不一样种类的信息 hd.sendMessage(msg); // 推送信息 } }).start(); break; default: break; } } // 界定一个内部类承继自Handler,而且遮盖handleMessage方式用以解决子进程传出去的信息 class MyHandler extends Handler{ @Override public void handleMessage(Message msg) { super.handleMessage(msg); switch (msg.what) { case UPDATE_TEXT: // 接纳到信息以后,对UI控制开展改动 tv.setText("改动取得成功!"); break; default: break; } } } }
了解:先在主主题活动中界定一个内部类,并承继自Handler,而且遮盖Handler中的handleMessage方式,这一方式在Handler中是一个空方式,便于大家自定信息的內容。随后在onCreate方式中,获得Button而且加上点击事件,在事情中加上一个进程,在进程中,应用Message类封裝一个信息,随后用Handler的目标推送这一信息,Handler目标的handleMessage方式便会被启用,做到更改TextView的內容的实际效果。