Android多线程通信-handler机制

Android Studio主线程不允许耗时操作,最后通过多线程实现了Android Studio远程连接数据库

但是主线程可以分线程传值,分线程却不可以直接向主线程传值

Android Studio通过handler和massage解决了这个问题

 

话不多说,看代码——

private Handler handler = new Handler(){
@Override
public void handleMessage(@NonNull Message msg) {
super.handleMessage(msg);
  //这一步是为了在有多个分线程传值时判断是哪一条分线程
if(msg.what == 0){
goodlist = (List<GoodBean>)msg.obj;  //获取分线程传递是数值
adapter.notifyDataSetChanged();
}
}
};

private void loadDataToGV(){
new Thread(new Runnable(){
@Override
public void run(){
List<GoodBean> list=new ArrayList<>();
adapter=new GoodsBaseAdapter(getContext(),list);
goods_gv.setAdapter(adapter);
//获取数据库中的数据
List<GoodBean> gl=Dao.getGoodsList();
list.addAll(gl);
//调用massage
Message message=new Message();
message.what=0;
message.obj=list;
handler.sendMessage(message);  //将信息封装在message中向主线程发送
}
}).start();
}

good_gv 是 GrigView 的按钮实例化,adapter是相应的adapter对象

 

这样就可以实现啦

 

参考——

https://www.bilibili.com/video/BV1j54y1H7Kj/?spm_id_from=333.880.my_history.page.click&vd_source=c2fca9b4cf27a6496643dde809415b05

https://blog.csdn.net/ZQL2288/article/details/72782975

 

posted @   椰子灰  阅读(56)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示