public class MainActivity extends AppCompatActivity {
private Button btnMain;
private MyHandler myHandler;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
myHandler = new MyHandler(this);
initView();
initListener();
}
private void initListener() {
btnMain.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Executors.newCachedThreadPool().execute(new Runnable() {
@Override
public void run() {
Message message = Message.obtain();
message.what = 1;
myHandler.sendMessage(message);
}
});
}
});
}
private void initView() {
btnMain = findViewById(R.id.btn_main);
}
//自定义Handler,设置为静态内部类,不持有外部类的使用
private static class MyHandler extends Handler{
//添加弱引用持有Activity实例,这样无论内存是否足够都会回收Activity
private WeakReference<Activity> reference;
//私有构造
private MyHandler(Activity activity){
reference = new WeakReference<>(activity);
}
@SuppressLint("SetTextI18n")
@Override
public void handleMessage(Message msg) {
//使用Activity弱引用的对象获取控件,首先对弱引用的对象进行判空
if (reference.get() != null) {
MainActivity mainActivity = (MainActivity) reference.get();
Button btnMain = mainActivity.findViewById(R.id.btn_main);
if (msg.what == 1){
btnMain.setText("更新ui成功");
}
}
}
}
}
使用Handler更新UI
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
推荐阅读更多精彩内容
- 这是我第 7 款 macOS 产品了:iText iText 是一款 从图片中识别文字 的 OCR 工具。 集成百...
- 通过单例模块实现日志记录,代码如下: 日志记录的变量请参考: https://www.jianshu.com/p/...