个人总结
ShanLiang_Build
android开发工程师
展开
-
讯飞语音SDK集成调试常见问题
讯飞语音SDK集成常见问题汇总原创 2023-03-05 16:34:03 · 1428 阅读 · 0 评论 -
Android 从带有html标签的String字符串中提取网页链接url
Android 从包含Html标签的String字符串中提取超链接url并在app内部浏览器打开原创 2022-12-04 22:04:54 · 1600 阅读 · 0 评论 -
Android RecyclerView 两种以上ViewHolder显示错乱
列表分为两种类型,一种是样式一,一种是样式二,通过不同的tab切换列表。页面默认展示样式一,当点击tab进行切换成样式二时,发现展示的内容既有样式一又有样式二。展示内容错乱,且确认过代码,已经根据不同数据进行了刷新,按照逻辑应该全部展示样式二,没有混合显示的情况。原创 2022-11-08 10:20:09 · 1859 阅读 · 0 评论 -
Android手机如何查看UI渲染层级,过度绘制
在手机开发者选项里找到过度绘制显示控制选项,打开之后调试UI显示问题原创 2022-10-24 15:29:21 · 1697 阅读 · 0 评论 -
Kotlin 反射获取internal class中的成员变量LiveData并绑定观察
kotlin 使用反射获取Internal类里的方法及成员变量。获取internal activity class并跳转到该activity调用类的带参数方法调用带参数的构造方法获取internal 类的LiveData类型的成员变量并执行observe操作原创 2022-10-18 19:18:16 · 1298 阅读 · 0 评论 -
Android 引入库报错 Null extracted folder for artifact 解决方案
Android 引入库报错 Null extracted folder for artifact 解决方案原创 2022-09-21 14:59:33 · 9928 阅读 · 2 评论 -
Android项目出现了同一个依赖库的两个版本
Android项目同一个依赖库出现了两个不同版本原创 2022-09-13 15:18:24 · 2757 阅读 · 0 评论 -
Android sun.security.validator.ValidatorException: PKIX path building failed问题解决方法
本人Android开发,最近在更新自己公司项目私有库时遇到了如下报错javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested t原创 2020-05-22 18:45:51 · 2455 阅读 · 0 评论 -
基于一个异常捕获功能的知识点梳理
最近做的项目恰好需要捕获一个异常来解决一个崩溃问题,于是自己找了网上一个异常捕获的例子,几乎是原封不动的把人家的例子拿来用了。用归用,原理还是要知道的,于是写一篇文章来总结异常捕获涉及的知识点。原文链接:Android全局捕获崩溃异常记录日志一、如何捕获一个异常崩溃1、UncaughtExceptionHandler了解一下如上图,UncaughtExceptionHandle...原创 2018-12-13 16:51:57 · 324 阅读 · 0 评论 -
java.lang.abstractMethodError的错误解决
日常开发中,如果在打包后遇到过java.lang.abstractMethodError的问题,其中一部分,可能是混淆引起的。解决方法就是把提示报错的地方,通过-keep 的方式过滤掉,不让那些代码进行混淆。本人遇到的是一个RecyclerView使用时adapter中的getItemCount方法报错。原因是Adapter是内部类,而getItemCount是公共方法。getItemCo...原创 2019-01-29 18:27:03 · 49537 阅读 · 0 评论 -
Mac上MySQL数据库本地数据库表内容导出到另一个数据库
本地有数据库A和BA里有已建立表单数据,B为空。一、导出A数据库内容。1 从终端进入到存放导出数据库文件的目录,如/Users/xxx/mysqlspace2 执行语句mysqldump -u root -p database_name>sql_name.sql查看目录下有新文件生成就导出成功了。二、将表单内容导入到B数据库中1 打开MySQLWorkbench,...原创 2019-02-15 17:01:49 · 1441 阅读 · 0 评论 -
RecyclerView缓存机制
RecyclerView作为常用的列表类需求开发的控件之一,已经成为我个人开发项目时的首选。其扩展性要远强于ListView。RecyclerView的缓存机制通常也是面试必考的的内容之一,本文就此做一个整理。一、四级缓存如果说RecyclerView和ListView在缓存机制上有什么不同,一定要知道RecyclerView是四级缓存,而ListView是两级缓存。上代码其中,一...原创 2018-11-06 17:53:06 · 2062 阅读 · 0 评论 -
ASMDex实践总结
ASMDex字节码插桩技术是AOP编程中一个重要的知识点。ASM技术的优势在于代码侵入性小,使用方式灵活。缺点在于上手难度较大。下面针对ASM技术实践时遇到的一些问题进行总结。一、ASM使用原理android开发时,我们都知道,在打包过程中,是先将java文件编译成class文件,之后再把class文件编译成dex文件。如果我们想要对代码进行一些修改操作的话,可以在class文件打包成de...原创 2018-11-06 16:16:20 · 1261 阅读 · 0 评论 -
Coodinatorlayout使用是加载异常报错XML inflate class error
最近在开发中一直被这个问题困扰,排查了一天,摸索出来两种规律。一 主题要使用AppCompat系列的,也就是Theme.AppCompat及其衍生的主题二 加载资源文件时的上下文要注意。作者使用activity的getApplicationContext时就报错,但是使用getBaseContext加载就正常。目前问题得以解决,但是原理还未研究清楚。 更新20180802随着项...原创 2018-06-14 15:53:11 · 1430 阅读 · 0 评论 -
Fragment与ViewPager结合使用白屏问题
最近的一个项目使用了fragment与viewpager结合的方式来展示内容,其中又包含网络请求与数据的列表展示。Fragment与ViewPager的结合使用出现白屏问题,网上的答案很多,基本上能够都覆盖到。但是我遇见的这个问题,却很奇葩,尝试了所有方案都没有解决。最终在一行一行添加log观察打印结果时才注意到问题所在。所以写一篇文章来给大家提供个思路,也许会有开发者有着与我类似的操作。...原创 2018-07-31 14:40:19 · 2558 阅读 · 0 评论 -
Android插件化开发过程中遇到的问题总结
最近接手的一个项目,是在插件分支里开发一个功能。但是写过demo之后,发现同样的代码在项目中运行不起来。在此过程中遇到的问题总结一下,以便以后遇到同样的问题直到问题出在哪。一、四大组件的注册四大组件的使用是一定要声明的,尤其是要在主站中声明。并且在插件化开发的过程中,确保你所新增的内容,在最新的主站包里都有对应的信息。不然是无法调用的。二、查看主站内容将app的apk解压缩,或生成...原创 2018-08-23 22:08:41 · 530 阅读 · 0 评论 -
OkHttp网络框架的使用整理
最近的项目中,使用了OkHttp网络框架来上传数据。正好自己在网络这一块还不太熟,借此机会来整理总结一下。一、什么是OkHttpOkHttp是一个高效的HTTP客户端,通过它可以轻松地实现HTTP请求的发送。它有一些优点,但是具体是什么原理使它拥有这些优点,还需要后续对源码进行分析。二、使用方法1、GET请求OkHttp的请求,是围绕着OkHttpClient来进行的。一个请求...原创 2018-09-13 15:15:49 · 787 阅读 · 0 评论 -
Android中单例模式的应用
单例模式在我们日常开发中或多或少都会遇见,使用场景也是多种多样。今天根据项目中需求,正好用到了单例模式。在此记录一下。一、跟随app存活有什么方式,可以让一个变量跟随app存活呢?是一个单例模式维护的静态工具类。静态工具类代码一般都使用单例模式来实现,可以防止建立多个,同时可以维护一个完整的类与其内部持有的变量。而java的代码是在类加载的时候才加载的,饿汉式单例能够保证在使用时才加载,可...原创 2018-09-17 12:01:59 · 516 阅读 · 0 评论 -
RXJAVA的使用总结
前些日子在项目中引入了RXJAVA,也算是初步入门了RXJAVA的使用。使用起来感觉还是挺方便的,唯一需要注意的就是线程的切换以及调用的方法是否是在该线程应该使用的。如UI相关操作一定要在主线程中。一、什么是RXJAVARXJAVA是一个库,用来支持我们需求里需要异步操作的地方。它比起handler等异步操作的实现方式来说,显得更为简洁。把整个操作整合成一条流水线,从上游到下游都能够看的清...原创 2018-09-13 15:11:47 · 13288 阅读 · 0 评论 -
Android中的进程保活
最近在看AIDL相关的知识,无意间看到一篇进程保活的文章,正好涉及到了进程相关的内容。顺便学习一下。原文地址Android中的进程保活一、什么是进程保活进程保活可以理解为让一个进程最大程度不被杀死,或者杀死后第一时间复活。二、进程的划分1、活动进程优先级最高,用户正在操作的程序,是前台进程,并且可操作。2、可见进程次高优先级,用户看得见,但是不能直接操作。3、服...原创 2018-10-11 16:37:34 · 497 阅读 · 0 评论 -
LiveData是如何做到在合适的时机刷新的
项目的AAC框架改造也进行了一段时间了,对于谷歌新提出来的这一套JetPack框架,个人觉得还是相当不错的。好好使用,能够给开发带来很大的方便,对于以后的功能扩展也很有利。下面就来研究一下,JetPack中,LiveData是如何实现自动刷新的。一、LiveData是什么LiveData简单地说就是你的数据,只不过它会在发生变化时被监听到,从而根据它的变化做一些响应的处理,比如刷新UI等等...原创 2018-09-21 18:17:51 · 4217 阅读 · 0 评论 -
Android分屏多任务带来的生命周期问题
前些日子发现的一个小问题,在使用Fragment的页面里,使用分屏任务,之后就会出现显示异常。追踪了生命周期,发现分屏时,会重新走Activity以及Fragment的生命周期。这就带来了问题。因为如果使用的是add的方式添加Fragment的话,就会每一次分屏都add一个fragment,这样就会造成显示上的异常。解决方案就是使用replace方式添加fragment,这样能够保证只有一个fra...原创 2018-10-08 16:23:05 · 1889 阅读 · 0 评论 -
Fragment的UI是何时绘制的
最近一个优化问题导致我不得不去思考一下这个问题。一、Fragment的onResumeFragment的生命周期是与宿主Activity关联的,这里只看onResume方法。因为Activity的绘制操作,是在onResume中进行的,所以想查看Fragment的绘制操作,还要追溯到onResume方法。上图是Fragment的onResume方法,看到非常简单,只有一行代码。但是...原创 2018-09-30 17:40:11 · 1174 阅读 · 0 评论 -
插件化开发遇到的问题汇总
插件化开发遇到的问题,大多数跟资源配置,包引用等相关,这些问题不算常见问题,但是在插件化开发中却有可能出现。因此也要记录下来做个总结。一、v7包的引用方式通常的导入方式为complie方式,这种方式是编译时和运行时都依赖。但是当在插件化开发中使用时,主站包往往引用了依赖,这时如果插件包仍然引用的话就会有冲突。因此在插件包使用一些支持包时,推荐使用provided方式,这种方式只有编译时...原创 2018-10-24 17:30:33 · 545 阅读 · 0 评论