Android
文章平均质量分 61
Android知识学习和记录
Zhongyi_Li
这个作者很懒,什么都没留下…
展开
-
maven center的地址
Maven 仓库地址地址地址原创 2024-05-10 16:00:15 · 194 阅读 · 0 评论 -
android在编译期对代码进行hook
PrivacySentryallenymt原创 2024-05-10 15:37:29 · 108 阅读 · 1 评论 -
微信支付文档写的很糟糕呀
点击跳转后,都是WXEntryActivity的使用,根本没有提WXPayEntryActivity,真是无语啊。找到了接入文档和demo下载地址,下载demo后,里面完全没有WXPayEntryActivity的时候,都是。开发微信产品涉及到注册邮箱的一定要谨慎了,如果注册错了,是注销不了的,而且这个邮箱是不能再用到其它产品的。我本想注册小程序APPID,结果注册到开放平台,现在追悔莫及,只能换邮箱了。我们需要的微信支付文档是在“微信开放社区”里。看出来了吧,微信支付的文档写的有多烂。原创 2024-03-28 20:28:52 · 322 阅读 · 1 评论 -
2023 MacBook Pro (Apple M2 Pro、macOS Ventura)配置Android开发环境
git 配置ssh网上有很多教程,但是,我正常生成密钥/共钥,把公钥配置到gitlab上,ssh -T git@code.sohuno.com,一直报没有权限,折腾了一下午发现了新系统导致的。,我下载这个版本导入项目后,提示我想买gradle版本太低,但是我们项目是个大项目,gradle不是随便升级的。配置git简单,用brew下载就行。采用绑定host的方式,还是不成功,最后采用的是创建install.sh脚本,然后执行,才成功的。扯淡的事情来了,官方提供下载历史版本的地址,只有一部分,而且还是很老的。原创 2023-09-28 14:29:14 · 1563 阅读 · 1 评论 -
Android消息循环机制(三)View postDelayed和postOnAnimationDelayed区别
我们看主要逻辑,其实就是把Message设置成异步消息,异步消息简单来说就是这类消息会优先执行,不会受屏障的影响。我们一般长用的是postDelayed,其实很简单,就是用Handler把message放到消息列队里,让主线程去执行。主要是postOnAnimationDelayed,第一次用,在做嵌套滑动的时候,需要去处理fling,用到了这个函数。在最近做开发的时候,刚好用到了这两个方法,细研究了一下两者的区别。原创 2023-02-28 10:59:32 · 438 阅读 · 0 评论 -
升级Room引发的惨案!!
room升级过程中遇到到坑原创 2023-02-16 11:19:35 · 3716 阅读 · 1 评论 -
pthread_create创建线程失败问题排查
pthread_create创建线程失败问题排查原创 2022-11-02 15:04:26 · 5435 阅读 · 0 评论 -
TextView使用的问题汇总
android textview 使用SpannableString时ellipsize属性不起作用?TextView 当设置了setMovementMethod方法后 在设置Ellipsize=end属性时 省略号不展示Make ellipsized a TextView which has LinkMovementMethod解决Android开发中经常与设计稿不吻合的问题原创 2022-10-11 08:48:39 · 968 阅读 · 0 评论 -
fastjson使用遇到问题汇总
fastjson使用遇到问题汇总原创 2022-09-23 17:38:47 · 1193 阅读 · 0 评论 -
RecyclerView逐步搞懂
RecyclerView逐步搞懂原创 2022-09-16 15:43:16 · 682 阅读 · 0 评论 -
导入JankStats检测卡帧库遇到问题记录
导入JankStats检测卡帧库遇到问题记录原创 2022-08-03 11:38:19 · 1016 阅读 · 1 评论 -
aar包代码混淆引起的问题分析
项目中把一个单独的功能模块放到一个单独的项目里,然后打成aar包,传到maven上,主线项目从maven上获取这个aar包使用。在打包成aar包的时候,可以配置使用不使用module配置的混淆文件的,我们不使用。还有一点需要说明的时候,打成的aar包是不包含自身混淆文件的,也就是说aar包集成到主项目中,是不存在aar包module中的混淆文件的,也没法使用,这点需要明确。也就是说集成到我们主项目中的arr包是没有混淆的,最终aar包的代码混淆不混淆是得看主项目混淆不混淆。我们主项目是混淆的,所以aar包原创 2022-07-14 10:03:48 · 1842 阅读 · 0 评论 -
Room RoomTrackingLiveData导致的内存泄漏
在使用Room RoomTrackingLiveData的时候,发现一个内存泄漏,为了解决RoomTrackingLiveData在一直写数据库的时候,不回调的问题,我自己重写了一个SHRoomTrackingLiveData,正因为重新后再里面加log发现了内存泄漏,Activity/Fragment已经退出了,SHRoomTrackingLiveData还活着,还在一直查数据库,导致一系列的对象泄漏,而且一直运行代码手机发热。内存泄漏,我们得发现引用关系,才能知道怎么泄漏的,可以用Android pr原创 2022-07-08 23:01:24 · 753 阅读 · 0 评论 -
Room使用遇到的问题
room升级可以自动配置,官方文档有说明,新版本的库就行,看参考链接。向下面一样配置is_my_attention是新添加的字段,配置完build一下,报如下的错:意思是没有设置默认值,我们设置一个默认值再build一下,还报错这是注解自动生成的代码,居然报错,真是奇葩,也可能是没用对。不纠结了,改成手动配置升级升级成功了采用上面的升级方式,用koltin就有问题,真奇葩这个怎么回事呀?还是注解自动生成代码出错了,为啥不能生成set方法呢?后来猜想是不是名字带is导致的,把i原创 2022-07-08 22:24:37 · 2547 阅读 · 0 评论 -
BottomSheetBehavior使用遇到的问题
BottomSheetBehavior原创 2022-06-24 10:49:26 · 720 阅读 · 0 评论 -
android进程自启动、关联启动
检测机构报告,说我们app在杀死app有自启动和关联启动行为排查中发现一种情况是AlarmManager定时任务导致的原创 2022-06-24 10:46:09 · 4709 阅读 · 1 评论 -
Koom内存检测之Activity Leak
koom activity leak原创 2022-05-17 14:51:23 · 376 阅读 · 0 评论 -
koom接入遇到的一个多进程问题
koom接入还是很简单的,按照官方说明就可以。但是,我们项目接入后报如下的错意思是在heap_analysis进程中commonConfig没有被初始化,可是,我们明明在Application中初始化了。怀疑还是多进程影响的,可是为啥koom的demo没有这个问题呢?我有个疑问是,一个app的多进程可以共享一个对象?答案是不能为此对koom demo打log调试了一下,发现是启动新进程的时候,Application会有个新实例,生命周期再走一遍,也就是说,不同进程都会把koom初始化一次,从log原创 2022-05-12 17:47:29 · 409 阅读 · 0 评论 -
Android开发各种奇怪问题记录
Android开发各种奇怪问题记录原创 2022-02-08 14:41:30 · 3540 阅读 · 0 评论 -
组件化开发的一些思考
在组件化开发中的,单工程方案中,有个需要解决的问题是:对于运行不同module的时候,settings.gradle是需要相应变化的,只需要include需要用到的其他module,当然这里说的其他module指的是直接采用源码的方式,而不是aar的方式,如果是aar包的方式,是不需要include的。在多工程方案中,只能通过arr的方式使用别的module,所以不存在settings.gradle include的问题。在组件化开发中有个很重要的一点是,业务组件之间是不能直接调用的,为了解决这个问题,原创 2022-02-08 11:24:25 · 384 阅读 · 0 评论 -
Android之内存使用分析
android 内存分析原创 2021-12-17 21:30:46 · 2207 阅读 · 0 评论 -
.9图的问题
需要制作.9的图,是不能进行压缩的,要不然整个背景都是黑的Android .9图片全黑原创 2021-11-23 17:23:21 · 248 阅读 · 0 评论 -
学艺不精,被DialogFragment坑了三小时
在DialogFragment的根布局中设置大小是无效的!!!无论是match、wrap还是固定大小,都无效。最终是通过子view的大小确定dialog的大小。坑爹,学艺不精,被坑了三小时,怀疑人生。优雅解决DialogFragment所有布局问题DialogFragment自定义布局和大小踩坑记...原创 2021-11-23 17:18:16 · 319 阅读 · 0 评论 -
Android权限的一些问题和理解
Android权限的处理,使用官方提供的permissions.dispatcher包处理,是很简单的,我们只需要在各种时机回调中实现业务代码就可以了。比如,权限被禁止的时机也是有的。看看几个概念的说明文章,方便理解Android 动态权限中shouldShowRequestPermissionRationale怎么理解,判断权限被禁止...原创 2021-10-11 16:06:01 · 1000 阅读 · 1 评论 -
Can not perform this action after onSaveInstanceState
在onActivityResult中commit fragment会报错,可以在主线程的下次消息中再commit从源码角度理解Can not perform this action after onSaveInstanceState异常原创 2021-09-09 10:38:43 · 168 阅读 · 0 评论 -
安卓framework开发的初理解
参考:Android framework层JNI的使用浅析我眼中的Android FrameworkAndroid Framework中的Application Framework层介绍Android Framework架构原理学习之AndroidApp启动认识EIT造形—android 架构概述其实我们写的App并不是一个完整的程序。我们写的只是一个套件组,就是一堆Activity,Service等等的组件。这个套件组给Framework框架组合在一起才是一个完整的程序。在这里先说一个概念,转载 2021-08-26 10:16:55 · 443 阅读 · 0 评论 -
Toast的理解和实践
Toast在我们实际开发中很常用,而且很简单,但是实现原理还是挺复杂的,只是系统帮开发者封装好了,让开发者觉得很简单。Toast是所有app都得用的,系统为了协调各种app的toast需要,那么就得系统管理,和系统需要管理所有Activity道理差不多,有个NotificationManagerService,通过对Toast源码需要,我们可以需要到怎么用两个Binder的方式,实现进程间的彼此通信。具体原理可以看Toast源码解析。需要说明的是,每个版本对Toast的源码都是有改动的,所以导致我们在定制原创 2021-08-24 15:08:50 · 370 阅读 · 0 评论 -
LiveData使用不当,导致的内存泄露
Live导致的内存泄露原创 2021-08-10 10:28:54 · 1421 阅读 · 3 评论 -
Fragment使用过程遇到的问题汇总和思考
一个异常的分析A activity跳转到B activity,然后又返回到A activity,在A activity的onActivityResult中,给A添加一个Fragment,由于在Fragment的onCreateView方法中有个异常,导致了崩溃07-15 15:48:44.699 3430 3430 D AndroidRuntime: Shutting down VM07-15 15:48:44.702 3430 3430 E AndroidRuntime: FATAL EXC原创 2021-08-06 17:10:51 · 536 阅读 · 0 评论 -
ImageView ScaleType解惑
在开发中很常用,可是总是搞不明白,网上讲的也是乱七八糟ImageView的scaleType详解这篇文章讲的可以,可是,还有有问题。center、centerCrop和centerInside解释的没问题,可是fixCenter、fixStart和fixEnd解释的就有问题,也可能是英文本身就有问题。不过,例子展示的没问题。Android中ImageView centerInside与fitCenter区别这篇文章说明白了centerInside和fitCenter的区别在实际开发中,如果我们想让原创 2021-07-16 15:17:36 · 216 阅读 · 0 评论 -
ConstraintLayout使用总结
ConstraintLayout使用过程中遇到问题记录 android:layout_width="0dp"效果是一样的,可以自动充满剩余空间约束布局ConstraintLayout看这一篇就够了哲♂学三幻神带你学习ConstraintLayout(约束布局)......原创 2021-07-09 16:15:22 · 3839 阅读 · 0 评论 -
逐步了解Fragment的全貌
Fragment的全貌原创 2021-05-27 15:15:42 · 211 阅读 · 0 评论 -
view.measure(0,0)使用的原理
调用view.measure(0,0)时发生了什么view.measure(0,0)Determining the size of an Android view at runtimegetmeasuredheight() and getmeasuredwidth() returns 0 after View.measure()原创 2021-05-19 10:55:37 · 298 阅读 · 0 评论 -
Android PopupWindow使用
Android PopupWindow怎么合理控制弹出位置(showAtLocation)Android自定义PopupWindow显示在控件上方或者下方原创 2021-05-17 15:52:41 · 189 阅读 · 0 评论 -
Jetpack之Paging
Android Jetpack之Paging初探Paging在RecyclerView中的应用,有这一篇就够了JectPack组件开发7-----Paging分页加载组件(网络加载分页数据)Jetpack之Paging 使用原创 2021-05-17 15:50:53 · 152 阅读 · 0 评论 -
Jetpack之Room
Room Database完全解析原创 2021-05-17 15:50:46 · 83 阅读 · 0 评论 -
Android画三角形
android layerlist 里面的rotate标签得到三角形原理详解Android图层妙用之layer-list的基本使用介绍Android 通过 shape 实现三角形气泡效果Android stroke 边框线 某一边原创 2021-05-17 15:50:38 · 1789 阅读 · 0 评论 -
RenderThread线程报错记录
RenderThread线程报错是很蛋疼的,它是属于native报错,而且还会有各种情况。04-23 16:31:38.343 17895 17895 F DEBUG : *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***04-23 16:31:38.344 17895 17895 F DEBUG : Build fingerprint: 'xiaomi/tiffany/tiffany:7.1.2/N2G47H/V9.5原创 2021-04-27 15:30:27 · 3635 阅读 · 0 评论 -
网络传输的数据为啥需要encode
理解网络传输对数据类似是有要求的,只有字母数字和极少的字符可以传输,其他字符都不行,所以得把不能传输的字符编码成能传的,具体怎么编码还得依靠字符集,一般是utf-8。得后台收到传输来的字符串,得依靠同类型的字符集解码。参考为什么要对url进行encode关于URLEncoder编码的问题...原创 2021-02-24 11:25:19 · 606 阅读 · 0 评论 -
Jetpack之LiveData源码分析
LiveData源码分析原创 2021-02-20 15:34:02 · 161 阅读 · 0 评论