在Android中,是不允许在子线程中更新UI的,一般情况下我们使用Handler,AsyncTask,RxJava来在主线程中更新UI
Handler实时更新UI思路
- 用Handler的post方法启动runnable,然后在runnable方法中,使用postDelay()方法加上延迟时间再次post对象runnable,就可以实现实时更新
private Handler mHandler = new Handler();
.....
控制方法里
mHandler.post(mRunnable);
//runnable如下
private Runnable mRunnable = new Runnable() {
@Override
public void run() {
//俩条更新Ui逻辑
mSeekBar.setProgress(mMyBinder.getPlayPosition());
mTextView.setText(time.format(mMyBinder.getPlayPosition()) + "s");
//再次发送
mHandler.postDelayed(mRunnable, 1000);
}
};
2 线程写一个持续循环,每次进入循环内及post一次,然后休眠100ms(看情况决定,这样也行
Rxjava
很好用,先插眼,以后整理
AsyncTask
Android内置傻瓜机异步