Java
赵小玉的小太阳
简单生活造就美丽人生~
展开
-
Android:getMethod()、getDeclaredMethod()区别
在写一个通用点击事件绑定时,使用getDeclaredMethod方法遇到一个问题:java.lang.NoSuchMethodException: findViewById [int]通过getDeclaredMethod反射“findViewById”方法时提示找不到该方法,最后使用getMethod()完成调用。原因:setContentView()是父类的方法,所以只能通过getMethod()访问。区别:getMethod方法只能获取public方法并且包括父类或者接口。 .原创 2022-02-17 15:43:25 · 2085 阅读 · 0 评论 -
Glide超时重试机制实现
1、使用官方提供的api实现Glide.error(),弊端:递归调用会出现无限调用的情况。2、(1)设置监听器 Glide.listener(new RequestListener<Drawable>() { @Override public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Drawable> target,boo原创 2021-10-13 11:09:45 · 2346 阅读 · 0 评论 -
Java关于静态块、代码块、执行顺序
静态块:JVM加载时只执行一次构造块:类种直接使用{}定义,每一次创建对象时,执行执行顺序优先级:静态块->main()->构造块->构造方法()原创 2021-08-18 19:37:56 · 79 阅读 · 0 评论 -
AIDL远程调用问题 java.lang.SecurityException: Binder invocation to an incorrect interface
最近模仿支付宝支付时使用了AIDL进行跨进程调用。过程中出现了远程调用失败的问题。java.lang.SecurityException: Binder invocation to an incorrect interface仔细查看了一下:服务端与客户端的AIDL包名没有保持一致,因此需要将包名修改成一样的就咳可以了。注意:AIDL文件要完全一致,包名也要完全一致![服务端]-----------------------------------------------------.原创 2021-07-20 08:57:41 · 293 阅读 · 0 评论 -
Android平板对接硬件设备时的消息处理
由于业务的扩展,需要对接新的设备,此时Android应用服务层需要兼容不同的指令。所有消息交互都采用同一个串口通道所以所有的交互都是同步的,如果消息交互时间长短不同、顺序不同,就可能会造成命令交互的混乱,导致发送和接受的交互序列不能很好的对应起来。为了解决上述问题,采用命令序号+超时的机制去处理。每次发送数据前都要对此条数据添加命令序号,或者是能对此条指令做特殊标识的标记,注意如果有的指令需要通过异步的方式去下发则需要单独开一个线程去发送,如果发送此异步指令时又接着下发了一条新的指令,则需要去添加一个原创 2021-07-03 16:24:48 · 175 阅读 · 1 评论 -
自己动手来封装一个线程池吧
之前做过一个需求是要求实时读取机房内每个天线所读的档案信息,这显然不能用串行的方式来做,并且用户的要求是再及时毫秒内相应完毕,也就是说一定要做到足够的快,让客户直观的感受到“快”到飞起~我们应该采用多任务的方式让程序尽可能多的读取天线信息。这里我们可以采用线程池来让更多的任务执行起来。...原创 2020-09-22 22:05:20 · 496 阅读 · 0 评论 -
基于Tcp协议的Socket的简单封装
基于Tcp协议的Socket的简单封装近期公司买了新的Android板子作用在自助借还机上,该设备内部集成了若干个天线,采用tcp协议与Android主板进行通讯,因此需要对socket的应用做一个简单的封装。简单了解一下Socket1、首先shocket不是一种协议,而是一个程序调用的接口API,属于传输层。2、通过使用Socket,可以在Android中应用TCP/IP协议。3、用户只需要调用Socket去整理数据、组织数据来达到符合指定的协议,就可以达到通讯。Android建立Socket原创 2020-09-18 14:24:58 · 869 阅读 · 1 评论