2019.6.19晚上~2019.6.20下午
文章目录
线程
线程:比进程更小的执行单元,每个进程可能有多条线程,线程需要放在一个 进程中才能执行,线程由程序负责管理,而进程则由系统进行调度!
异步消息处理——Handler
如果在子线程里更新UI:
mBtnchange.setOnClickListener(this);
}
@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.btn_change:
new Thread(new Runnable() {
@Override
public void run() {
mTvtext.setText("Nice to meet u");
}
}).start();
break;
default:
break;
}
}
点击按钮程序会崩溃:Only the original thread that created a view hierarchy can touch its views.
只能在主线程(一般情况下是UI线程)下更新UI
因为在Android中,相关View和控件不是线程安全的,不允许在子线程中进行UI操作。
异步消息处理:
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
public static final int UPDATE_TEXT = 1; //表示更新了textview
private Button mBtnchange;
private TextView mTvtext;
//主线程中
private Handler handler = new Handler() {
@Override //对具体的message进行处理
public void handleMessage(@NonNull Message msg) {
switch (msg.what) {
case UPDATE_TEXT:
//在这里可以进行UI操作
mTvtext.setText("Nice to meet u");
break;
default:
break;
}
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mBtnchange = findViewById(R.id.btn_change);
mTvtext = findViewById(R.id