首页 > 其他分享 >Android多线程通信-handler机制

Android多线程通信-handler机制

时间:2023-04-23 13:34:42浏览次数:37  
标签:adapter handler 线程 new Android 多线程 message

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

 

标签:adapter,handler,线程,new,Android,多线程,message
From: https://www.cnblogs.com/yansans/p/17346285.html

相关文章

  • Python之多进程与多线程
     1.1线程frommultiprocessingimportProcessdefshow(name):print("Processnameis"+name)if__name__=="__main__":proc=Process(target=show,args=('subprocess',))proc.start()proc.join()......
  • Android Studio的安装及环境配置
    AndroidStudio的安装及环境配置安装jdk下载及安装AndroidStudio下载官网:https://developer.android.google.cn/studio/往下滑:建议下载到除C盘以外的盘:下载好安装程序之后双击安装:一路next,installAndroidVirtualDevice安卓虚拟设备,就是在电脑上虚拟出......
  • android OTA升级(VAB分区)
    androidOTA升级(VAB分区) 升级开始前,升级程序update_engine将要升级的slot标记为unsuccessful,调用boot_ctl的SetSlotAsUnbootable()hardware/interfaces/boot/1.1/default/boot_control/libboot_control.cpp316boolBootControl::SetSlotAsUnbootable(unsignedintslot){......
  • python--多线程:锁 、全局锁、Queue队列以及线程池
    关于如何加锁,获取钥匙,释放锁:lock=threading.Lock():生成锁对象,全局唯一;lock.acquire():获取锁。未获取到会阻塞程序,直到获取到锁才会往下执行;lock.release():释放锁,归回后,其他人也可以调用;【注意事项】:lock.acquire()和lock.release()必须成对出现,否则就有可能造成......
  • C++ - 多线程之初识多线程
    1.认识多线程传统的C++(C++11之前)中并没有引入线程这个概念,在C++11出来之前,如果我们想要在C++中实现多线程,需要借助操作系统平台提供的API,比如Linux的<pthread.h>,或者windows下的<windows.h>。C++11提供了语言层面上的多线程,包含在头文件<thread>中。它解决了跨平台的问题,提供......
  • android 前台保活 service
    引用:https://blog.csdn.net/qq_34195507/article/details/1036343961.DeskService前台服务packagecom.cpsc.livedemo;importandroid.app.Notification;importandroid.app.NotificationManager;importandroid.app.Service;importandroid.content.Intent;importandr......
  • Appium-Server-GUI、Appium-Inspector、Android (SDK tools package)commandlinetools
    公众号回复中增加了最新版Appium和安卓SDK下载链接Appium-Server-GUI-mac-1.22.3-4.dmgAppium-Server-GUI-windows-1.22.3-4Appium-Inspector-mac-2023.4.1Appium-Inspector-windows-2023.4.1(SDKtoolspackage)commandlinetools-mac-9477386_latest(SDKtoolspackage)co......
  • ZSTD多线程压缩
    测试代码:1//main.cpp2//34#include<iostream>5#include<fstream>6#include<vector>7#include<chrono>8#include<thread>9#include"./zstd/lib/zstd.h"1011usingbyte=uint8_t;12usingbuff......
  • python多线程接口请求
    importthreadingimportrequestsrequests.packages.urllib3.disable_warnings()urls_list=["http://127.0.0.1:5000"for_inrange(1,101)]response_ok=0response_error=0defget_response_code(url):globalresponse_errorglobalr......
  • 多线程 —— 线程的六种状态
    一、线程的六种状态,如下图所示二、六种状态介绍:线程状态具体含义NEW一个尚未启动的线程的状态。也称之为初始状态、开始状态。线程刚被创建,但是并未启动。还没调用start方法。MyThreadt=newMyThread()只有线程对象,没有线程特征。RUNNABLE当我们调用线程对象的s......