- 博客(219)
- 收藏
- 关注

原创 a.gray.PiggyGoldcoin.a病毒(已解决)
一、问题描述最近公司突然收到应用宝,OPPO和VIVO的应用下架通知,通知我们的俩款App疑似金融类诈骗软件,已下架。点进去查看是 平台例行扫描应用再次推送病毒结果,自动下架~当时全项目组都很蒙蔽,一个运动类App居然被查出是金融类诈骗病毒。后面不信邪有上传了一次,结果还是说是病毒软件,为了防止多次上传被拉黑名单,于是我们先打算自行测试一下。第一个,各大测试平台,VIVO用的是腾讯,安天和360扫描,于是被得到了以下结果测试了几次,发现都是腾讯手机管家测出来的,...
2020-11-19 20:01:05
81882
45

原创 ADB命令查看应用包名
一、查看当前包名1、在手机上打开app2、电脑端Crtl+R 输入cmd回车 输入命令:adb shell dumpsys window w |findstr \/ |findstr name=3、如下图,我在手机上打开了今日赚(一款赚零花钱的悬赏任务类App),查出来的包名应用名:其中 com.im.todayz为应用包名 ,fw.earntoday.ui.activity.MainActivity为当前运行的activity界面二、查看所有包名1. 依旧数据线连接手机,注...
2020-11-03 09:50:02
60405
4
原创 HashMap详解
Map用于保存具有映射关系的数据,Map里保存着两组数据:key和value,它们都可以使任何引用类型的数据,但key不能重复。所以通过指定的key就可以取出对应的value。而HashMap是用哈希算法实现Map的具体实现类。
2025-03-16 10:15:46
906
原创 Bug记录-Viewpager2的Fragment生命周期同步问题
此Bug可能不符合其他需求哦,仅限个人总结;界面描述:MainActivity用tablayout+viewpager2实现了首页五个Fragment横向切换,然后在第四个FourthFragment里,实现了Viewpager2的类似于画廊的多个ChatFragment纵向切换。
2025-03-14 14:27:22
427
原创 Viewpager和RecycleView的滑动冲突
Bug表现:我在滑动recycleview列表时,有时候会导致viewpager滑动了,也有可能只会滑动viewpager,列表不能响应手势,切换到了下一个界面我的布局:我的布局相对恶心,是A fragment里有一个viewpager2,viewpager2的每一个子项是B fragment,每个B fragment里都有一个列表。他两都是纵向滑动。期望表现:当我手指在列表区域进行操作时,不希望viewpager有任何滑动上的响应。问题原因:滑动冲突,事件的响应有时候在列表有时候在
2025-03-13 17:41:41
444
原创 Android BottomSheetDialog使用详解
有时候遇到需要交互的,设计金额的,接口请求的底部弹窗,则需要自定义BottomSheetDialog,下面是一个简单实现。= null!) {): View {) {// 设置点击事件Toast.makeText(requireContext(), "确认按钮点击", Toast.LENGTH_SHORT).show()dismiss() // 关闭弹窗dismiss()
2025-03-12 10:11:40
347
原创 Kotlin和Java区别
哈哈哈,前段时间,面试的时候,突然问到我Kotlin和Java的区别,一下子把我问懵逼了,确实没遇到问这个的,想了下,说了下Kotlin的编译时空检查机制,代码更简洁,很多封装好的API可以直接调用,Kotlin有Jetpack全家桶,有协程,有lateinit和by lazy懒加载机制等等,后面着重问我协程去了,但是我知道我也有很多没有答上。
2025-03-07 16:49:58
1378
原创 Kotlin协程(六)Flow流
在 Kotlin 中,Flow是一种,用于生成数据,并在不同协程之间传输数据。在协程中,如果我们要连续返回多个值,可以使用:集合 (List):一次性返回所有数据,但不能支持异步或无限数据流。回调 (Callback):可以异步获取数据,但不够优雅、易用。Flow:支持异步、序列化、流式数据处理,更适用于长时间运行的任务。
2025-03-06 15:23:52
649
原创 Kotlin协程(五)协程的取消和异常处理
在我们日常的开发时,需要对一些任务进行控制,控制好协程的生命周期,在必要的时候把任务取消掉,对于协程的异常,要进行捕获并防止其影响作用域内其他的协程。
2025-03-06 14:40:31
776
原创 Kotlin协程(四)协程CoroutineScope作用域
CoroutineScope 定义了协程的生命周期,它用于管理协程的启动、取消,并确保协程在 Scope 结束时自动取消,避免内存泄漏。如果担心自己忘了取消job,推荐使用lifecycleScope。(生命周期感知)协程作用域。结束时自动取消,避免内存泄漏。:可以手动取消所有协程。来管理协程生命周期。
2025-03-05 11:59:22
455
原创 Kotlin 协程(三)协程的常用关键字使用及其比较
在使用协程时,经常会用到suspendlaunchasyncawait为了更好地理解suspendlaunchasyncawait之间的区别,我们可以从等方面进行对比。suspendsuspendlaunchJoblaunchJobasyncawaitasyncFutureawait()asyncasync类似于launch,但它launch只是执行,不返回值。,它只是,等任务完成后再返回。launchasynclaunchasync是 Kotlin 协程中的一个函数,它。
2025-03-04 15:21:46
985
原创 Kotlin协程(二)协程的生命周期及管理
在 Kotlin 中,协程的生命周期 主要涉及 创建(Starting)、执行(Active)、挂起(Suspended)、取消(Cancelled) 和 完成(Completed) 这些状态。协程的生命周期受 CoroutineScope 和 Job 控制。
2025-03-03 14:41:22
537
原创 MPAndroidChart 图表库使用详解
因为最新款App需要做健康类的应用,于是对比了几个三方库后,还是选择star最高的MPAndroidChart来实现项目的需求。但是网上看的要么版本太老,要么就是需要VIP,或者不能满足自己的需求,所以这里自己进行一下总结下几个图表的使用及其常用方法。⚡ 一个功能强大且易于使用的 Android 图表库 ⚡。3.4 雷达图 RaderChart。我就去下载的aar自己本地依赖的。3.2 柱状图 BarChart。3.3 饼图 PieChart。这是github的三方库地址。去阿里云仓库下载的3.0.0。
2025-02-24 11:58:17
875
原创 MPAndroidChart——饼图PieChart详细使用
第二个例子 主要是多进行一些配置,具体的api有啥作用请看著书。,用于可视化数据占比。它可以展示多个类别的数据,并以。是 MPAndroidChart 提供的一种。方式直观呈现各部分比例。
2025-02-24 11:56:00
498
原创 MPAndroidChart——柱状图BarChart详细使用
关键点:因为自带的堆叠柱状图会加你的第一个值,如果不减去第一个值,就会绘制2到(2+8)的区间,也就是2-10都会绘制,这肯定不符合需求设计,所以记得减去上一段的Y值。实现柱状图,能够良好的反应用户某一段时间的各类数据,或者用于展示各个季度的各种财务相关的数据。这次主要是app内需要实现三种柱状图,圆角柱状图,区间柱状图·,多组柱状图。具体的API调用和注释都在代码里了,我就不补充了。需求是需要展示当天的温度区间,用户的血压区间。取消X,Y轴的展示,增加虚线,增加圆角。灵感来自于堆叠柱状图的实现。
2025-02-21 18:13:27
438
原创 MPAndroidChart——折线图LineChart详细使用
代码补充:上面的代码注释很完整,主要是新增了填充渐变色,Y轴设置的虚线,不展示点,x,y轴不展示等等。实现分数,心跳的折线图,本文主要介绍三方库里折线图的基础实现,详细的API作用和一些扩展。库版本不同可能会导致前缀不同,输入LineChart肯定会有提示的。主要用于存储和管理数据点,它是所有数据集(如。4. 折线图-渐变色填充。2.4.4 空数据处理。构造函数:我加了注释。
2025-02-21 15:09:27
492
原创 Android 常用设计模式和实例
设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样。项目中合理的运用设计模式可以完美的解决很多问题,每种模式在现在中都有相应的原理来与之对应,每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的核心解决方案,这也是它能被广泛应用的原因。设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。
2025-02-10 18:50:48
1300
原创 Android FCM推送及通知栏展示
实现FIrebase Cloud Message推送功能,用户收到通知后,可以悬浮通知,自定义的大/小通知展示在通知栏,判断前台/后台,点击后进行跳转。
2025-02-06 10:01:37
1756
原创 Android性能优化系列——卡顿优化
就是。我们知道手机的屏幕画面是按照一定频率来刷新的,理论上讲,24 帧的画面更新就能让人眼感觉是连贯的。但是实际上,这个只是针对普通的视频而言。对于一些来说,比如游戏,起码需要 60 帧,30 帧的游戏会让人感觉不适;如果实现不卡顿,则需要在 16ms 内做完所有的操作才不会造成卡顿。
2025-02-05 14:18:35
763
原创 Android 谷歌支付对接流程
需求:最新的项目需要对接谷歌的订阅功能,很久没对谷歌支付了,最开始还是绕了点弯路,在此进行一点小小的总结。2.1 在BaseApp里进行初始化的调用,BaseApp记得在manifest进行引用。在应用设置中,启用 Google Play 结算。依赖库:app的build.gradle下。,创建或选择一个现有的应用。上面的代码进行了注释。
2025-01-17 12:19:44
1145
原创 Viewpager2 页面切换无动画,不经过中间页面
需求:使用viewpager+tablayout来实现各种分类视频及其切换,但是当我从第一个tab点击第9个tab时,中间会一下子跳7个页面,这样闪烁的过程其实很难受。于是要求不要有过度的动画。* @param smoothScroll 为 True 表示平滑滚动到新item,为 false 表示立即滚动到新item。* @param item 要选择的项目索引。需求:viewpager2禁止左右滑动。
2025-01-15 12:32:39
328
原创 Android 毛玻璃 高斯模糊 五种方法,赶紧用
需求:Android实现模糊真的很烦,每次UI画出来就觉得真的很烦。一般不会做,每次做就觉得有点烦,有时候是模糊图片,有时候是模糊有个背景。因为遇到模糊的需求的时候比较少,所以也没总结。这次遇到了,还让我走了好些绕路。这次进行个小小总结。总结了用到的五种实现方式。
2025-01-10 10:41:59
2676
原创 Android 判断RecyclerView是否滚动到底部
tips:recyclerView.scrollState == RecyclerView.SCROLL_STATE_IDLE 这个判断条件很重要哦。需求:列表滚动后,判断是否滚动到底部,展示加载更多的Loading文案和动画。
2025-01-09 18:34:36
446
原创 Android切换语言不退出App
中设置语言是为了在运行时动态更新语言,尤其是当用户切换语言后,某些界面可能需要重新加载来反映新的语言设置。2.initData里面就是数据赋值渲染UI,如果调用Activity的recreate方法会闪退,别调用。2.所有的基类进行设置,记得application在manifest应用。1.既然只刷新当前UI,就得生成新的context。
2025-01-09 18:16:08
702
原创 Serializable,Parcelable和data class的区别
序列化是将对象的状态(属性数据)转换为字节流或其他可存储或传输的格式的过程。主要作用存储:将对象保存到文件或数据库中。传输:在网络中传输对象,比如在客户端与服务器之间传递数据。缓存:将对象转化为可恢复的格式,便于后续恢复使用。序列化后7. 什么是反序列化(Deserialization)?反序列化是将序列化后的字节流(或存储格式)重新转换回原始对象的过程。主要作用从存储或传输的格式中重建对象。恢复数据到应用中,便于程序继续使用。8.序列化与反序列化的用途网络传输。
2024-11-19 11:46:29
1011
原创 SparseArray 和 HashMap 的区别
和 HashMap是 Android 中两种不同的数据结构,用于存储键值对。它们的主要区别体现在数据结构的实现、性能优化和适用场景上。
2024-11-19 10:10:09
819
原创 RecyclerView详解——(四)缓存复用机制
如果和RecyclerView上的position或者itemId匹配上了,那么认为是干净的ViewHolder,是可以直接拿出来使用的,无需调用onBindViewHolder方法。具体而言,当一个列表项被移出屏幕后,RecyclerView并不会销毁其视图,而是会缓存起来,以提供给新进入屏幕的列表项重用,这种重用不但可以避免重复创建不必要的视图,还可以避免重复执行昂贵的findViewById从而达到的改善性能、提升应用响应能力、降低功耗的效果。从上述代码可以看出,缓存复用的对象是。
2024-11-18 23:09:44
1632
原创 RecyclerView详解——(三)ItemTouchHelper.Callback拖动和侧滑
是中用于处理手势操作的回调类,通常用于实现项目的拖动(Drag)和滑动删除(Swipe)功能。通过扩展类,你可以自定义手势响应方式以及如何在项目中表现这些手势。
2024-11-15 14:23:29
499
原创 RecyclerView详解——(二)优劣,ItemDecoration,SnapHelper
本文主要讲述RecyclerView和ListView的区别,ItemDecoration实现分割线,边距和背景,以及SnapHelper的使用。
2024-11-12 18:29:02
877
原创 RecyclerView详解——(一)基本使用
官方注释:RecyclerView 可以让您轻松高效地显示大量数据。您提供数据并定义每个列表项的外观,而 RecyclerView 库会根据需要动态创建元素。顾名思义,RecyclerView 会回收这些单个的元素。当列表项滚动出屏幕时,RecyclerView 不会销毁其视图。相反,RecyclerView 会对屏幕上滚动的新列表项重用该视图。RecyclerView 可提升性能和应用的响应速度,并降低功耗。
2024-11-12 16:57:15
1930
原创 Kotlin 协程(一)协程的定义及基础使用
Kotlin 协程是一种轻量级的并发编程方式,用于简化异步代码的编写。它允许你编写看似同步的代码来处理异步任务,使代码更加简洁、可读且易于维护。协程广泛应用于 Android 开发中,用于网络请求、数据库操作等需要异步执行的任务。协程是一种语法糖 协程的出现是来解决异步问题的,但它本身却不提供异步的能力,协程某种意义上更像是一种语法糖,它为我们隐藏了异步调用和回调的细节,让我们更关注于业务逻辑的实现。一句话概括,协程是一种轻量级的方便操作异步代码的语法糖,而它本身不提供异步能力。
2024-11-05 16:40:36
1203
原创 Kotlin by lazy和lateinit的使用及区别
使用lateinit:适用于那些需要稍后赋值且会被多次修改的对象属性,比如 Android 中的Context或View。使用by lazy:适用于那些不需要立即初始化,且一旦初始化后不再改变的只读属性,比如计算密集型或一次性加载的属性。一般来说的话,lateinit一定要记得初始化,不然后面会爆异常UninitializedPropertyAccessException。
2024-11-04 17:57:04
878
原创 Android View事件分发
什么是View事件分发?将点击事件(MotionEvent)传递到某个具体的View或者ViewGroup处理的过程。事件分发是向下传递的,也就是父到子的顺序,当用户触摸屏幕时(View或ViewGroup派生的控件),将产生点击事件(Touch事件)。Touch事件相关细节(发生触摸的位置、时间、历史记录、手势动作等)被封装成MotionEvent对象。
2024-11-04 14:38:01
1373
原创 Retrofit网络请求二次封装
(之前用过Any,但是后端返回的数据格式有时候会不一样,有可能是Boolean,String,或者就是个列表,并不是一个json,所以后面我换成了JsonElement)App应用程序通过 Retrofit 请求网络,实际上是使用 Retrofit 接口层封装请求参数、Header、Url 等信息,之后由 OkHttp 完成后续的请求操作。网络请求在App开发中是不可避免的开发功能点,Android自带的ottp用于网络请求,于是便衍生了各种便捷的网络请求三方库。retrofit的网络请求的工作本质上是。
2024-10-24 18:30:15
721
原创 Andorid 应用更新(升级)
如果使用 Google Play 提供的应用内更新 API,你通常不需要任何额外权限。如果你的 APK 文件下载到了外部存储(如 SD 卡或公共下载文件夹),你需要这个权限(Android 10 及以上通常不需要使用外部存储权限,使用。: 如果用户通过浏览器或自定义下载器安装应用,Android 8.0(API 级别 26)及以上需要明确授予安装 APK 的权限。如果你使用 Google Play 应用内更新 API,它处理了所有更新流程,开发者不需要操心文件读写和安装权限。1.请求接口,是否需要更新。
2024-10-24 10:46:31
505
原创 Android LiveData 数据倒灌
另一方面,LiveData 本身被设计为粘性事件,也即,一旦 LiveData 持有数据,那么在观察者订阅该 LiveData 时,会被推送最后一次数据。一方面,用于通信的 LiveData 是被托管在 Activity / Application 级作用域 SharedViewModel 中,于是。相关类型的文章很多,这里只做个人总结和其余的方法推荐。(假设通信双方是 Fragment)
2024-09-24 10:52:40
776
原创 Android 点击其他组件让输入框失去焦点
在用户填写基本信息的界面里,在输入框唤起键盘后,有时候又会弹起选择框(PickerViewDialog),如果用户在没有关闭键盘的情况下,点击PickerView,此时的焦点仍然在上个输入框,此时。之前想的是,在点击选择框时,让输入框失去焦点,但是有多个选择框和输入框的情况下,这样代码就太冗余了。于是就想到了,在dispatchTouchEvent里进行事件处理。4.这样就实现了点击屏幕上就失去焦点的功能。
2024-09-24 09:57:03
467
原创 RadioGroup和Viewpager中onCheckedChanged和onPageSelected 循环调用多次问题
其实在写这个代码的时候我就想过,再选中某个页面的时候,去设置对应的radiobutton的状态的时候,回调了onCheckedChanged,又在这里面设置viewpager的currentItem,设置了currentItem就会回调onPageSelected,岂不是无限循环。但是现在因为切换指定页面的时候,需要请求接口来刷新页面,然后今天在自测的时候,发现同一个接口会疯狂请求好几个!看那三个方法里面的代码,在满足条件的情况下,会有三次onCheckedChanged的回调,所有是这儿出了问题。
2024-09-20 20:31:35
544
原创 Android 通过相机和系统相册获取图片,压缩,结果回调
在常规的App开发中,很多时候需要用户上传图片来进行一些业务上的实现,例如用户反馈,图片凭证等。我的Retrofit请求自己又封了一下,这儿就不粘贴。传文件和普通接口会有些不同,注意一下就好了。流程请看代码注释,其中的fileprovider,需要自己在manifest中声明。我使用的是EasyPermission框架,也可以自己写。你允许分享的文件路径。相关权限回调处理,可以去看我的另一篇博客。指的是一个 XML 文件,你需要在。标签,并定义了可共享的目录。目录下创建这个文件,告诉。
2024-09-14 09:52:48
441
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人