Android知识
文章平均质量分 83
矿坑中的野猫
这个人记录一下日常操作。
展开
-
ViewModel+Flow的绝佳实例和封装
ViewModel+Flow的绝佳实例和封装0.前言在最近的Android开发中,主流推送慢慢从Java→Kotlin,LifeData→Flow.那里面各有各的好处,也都是为了解决不同应用场景给出不同的方案。但是在使用官方推荐的ViewModel+Flow时,会有很多需要解决的细节,里面也会牵涉到比较多的知识点。所以这个文章就是将自己学习到的东西进行总结.此文章会涉及到的知识点会比较多包括:kotlin扩展函数kotlin高阶函数kotlin内联函数Flow的使用1.Flow的简原创 2022-05-23 11:26:46 · 2607 阅读 · 0 评论 -
JetPack 之 Pagging3.你可以不用,但是不能不会
JetPack 之 Pagging31.Pagging3是什么Pagging3是帮助用来做加载和显示 本地存储或者处理更大的数据集(网络)的数据页面.简单来讲,就是一个分页加载库.具有的好处为:1.只需要按照它提供的架构去编写业务逻辑,就可以轻松实现分页功能。2.非监听列表滑动事件.实现效果为:2.Pagging3的依赖def paging_version = "3.1.1"//Java依赖implementation "androidx.paging:paging-runtime:原创 2022-05-06 10:11:32 · 830 阅读 · 0 评论 -
多渠道打包美团工具walle使用步骤以及坑...
新公司,学东西...忙的不行原创 2022-04-01 18:04:46 · 5575 阅读 · 0 评论 -
Rxjava2原理流程+操作符+线程切换 浅析~
0.前言没拜读过强大的代码就建议去稍微看一下rxjava2的原理,并不难懂。写的非常的好,也能领略到大佬写的代码有多么的强。里面的设计模式真的牛逼1.Rxjava2Rxjava2用于我们来做响应式编程模式的操作。用起来很简单,但是如果面试/其它场合下让你去写一些骚操作或者说其中的原理,真的蒙蔽的不行…然后去研读其代码,发现很多文章写的优点乱.让我有点理不清楚. 这就当算是我阅读源码的理解吧…2.文章解决的问题.RxJava2的基本运行流程map操作符的运作线程切换原理3.总图解借助大佬原创 2022-01-21 17:14:52 · 2318 阅读 · 0 评论 -
Android一步步实现无痕埋点(6)-------AutoService
谢谢你看到这.原创 2022-01-11 17:53:30 · 1548 阅读 · 0 评论 -
Android一步步实现无痕埋点(5)-------斗转星移
刚看到transfrom就发现被遗弃了.真有你的原创 2022-01-11 16:16:08 · 2031 阅读 · 0 评论 -
Android一步步实现无痕埋点(4)-------无尽痛苦
0.前言上一篇文章,我们已经找到了我们的作案对象.接下来我们就要开始下手了~完整依赖dependencies { implementation gradleApi() api "com.android.tools.build:gradle-api:$apgVersion" api "com.android.tools.build:gradle:$apgVersion" implementation 'commons-io:commons-io:2.6' imp原创 2022-01-11 15:45:39 · 1500 阅读 · 0 评论 -
Android一步步实现无痕埋点(3)-------虎躯一震
0.前言Android一步步实现无痕埋点(2)-------开始折磨上一篇文章,我们讲解了无痕是个什么东西,现在我们开始解(jiao)释(bian)transform又是在其中担任了一个什么神奇的步骤。1.寻找"作案"对象大佬的transform讲的很好由上篇文章,我们知道了。整体步骤要先找到.class文件之后对其进行修改。那么transform的作用就是在打包.dex文件之前的编译过程中操作找到我们的.class文件。对其进行遍历.首先, 先添加依赖:我这里的gradle版本的7.0原创 2022-01-11 10:29:03 · 1197 阅读 · 0 评论 -
Android一步步实现无痕埋点(1)-------万恶之源
0.前言有一段时间高强度刷贴,然后看到了wanandroid里面有一位做基础架构的大佬—>虾哥.进入详情页面一看,看到了一个叫无痕埋点插桩的这么一个神奇的东西。之后去了解一下,发现其实就是实现AOP的一个技术方案,又觉得非常的有用,而且在很多地方都提及到了这么一个技术。我就开始想方设法的开始进行学习.进入虾哥的Demo,没有注释,没有说明.零基础的我.直接麻掉了.Demohttps://github.com/qazxcs113/AndroidAutoTrackdemo实现很多神奇的功原创 2022-01-10 15:45:42 · 1015 阅读 · 0 评论 -
Android kotlin协程浅析笔记
1.协程协程?我们明确一下这篇文章,我们需要了解什么东西.1.协程是什么东西2.协程用来干什么3.协程怎么写> 4.你对我的爱有多深根据大佬们的理解,协程大概可以理解为.一种轻量级线程,协程类似于线程,但是它算是一种可以在单线程模式下模拟多线程编程的效果.里面状态中的挂起和恢复和我们的操作系统无关,只和函数有关区别:线程运行在内核态,协程运行在用户态总结:Android kotlin中协程是一个线程框架根据定义得出作用:跟线程差不多的作用, 用来做异步/网络请求2.协程域的原创 2021-12-16 11:51:11 · 2776 阅读 · 0 评论 -
Lifecycle原理解析
0.前言我们可以看到,viewModel和liveData都与lifecycle有关系,所以理解这一部分的源码也让我们对Jatpack的理解会更深一步这一部分的源码,我感觉我不需要自己去写了…网上有大佬自动就写了很多,自己总结,其实也差不多这么一回事.这里贴出原贴大佬,并且,自己将一个简易流程写出来看,就差不多了.1.原贴大佬的时序图(必看),以及一些流程https://blog.csdn.net/zhuzp_blog/article/details/78871374看不太懂就看第二遍,这里涉原创 2021-12-14 16:22:21 · 400 阅读 · 0 评论 -
LiveData原理解析...
0.大佬推荐https://blog.csdn.net/jhbxyz/article/details/108321239先抛出大佬写的…写的确实好,但是我只是喜欢自己总结罢了1.LiveDataLiveData,也作为MVVM框架内基础的一员,可以很好的将我们的V层和VM层分开。那我们靠的就是LiveData.~那它具有的特性为:使用 LiveData 具有以下优势:确保界面符合数据状态LiveData 遵循观察者模式。当生命周期状态发生变化时,LiveData 会通知 Observer 对原创 2021-12-07 16:36:48 · 1658 阅读 · 0 评论 -
内功心法--->理解 贪心算法与动态规划思想...
1.前言最近在刷LeetCode(当然,我是个fw),但是能很清楚的知道里面有两个十分重要的思想。贪心算法动态规划然后,我发现了同一个题解,都能用它来进行计算,并且两者的想法很相似。所以我打算搞清楚他们的思想,以及分别在什么样的场景去取实现它。先说一个总结吧,否则可能就没耐心看下去了.贪心算法:求解当时情况的最优解,解的集合即为结果,但结果并非一定为全局最优解。动态规划:当时的结果都将会被保留下来,保留下来的解,都对当时情况的解有影响。2.最大子数组和来,我们先来整一个经典题目,看一下原创 2021-12-06 11:11:17 · 150 阅读 · 0 评论 -
Android奇淫巧技----Android Studio模拟器将应用变成system app
1.前言你从来不知道为什么会有这么多神奇的需求,如果再Android板子没下来的时候,又要开发app.而有些API又在sysytem App下才能有用的话.模拟器是一个快速开发的方式…保证你下载的模拟器后面不可以是Google PLAY,至少是Google APIS,不然root失败2.签名工具栏.Build->Generate Signed Bundle or APK选择APK进入PS:我也不知道这步要不要,但是我觉得这步是为了保证我的app唯一create New 后,创建一个新的原创 2021-12-02 10:47:47 · 1024 阅读 · 3 评论 -
阿里的ARouter浅析
1.学习这是一个学习的篇子…然后我只是把简单的学习放在这里。具体的这里都不分析…2.众所周知反正不懂就是众所周知.ARouter解决了组件化之间不依靠依赖就可以进行跳转。根本原因是什么呢?无论哪个模块的Activity最终都会打包到同一个apk内,从代码文件上来讲,这写Class文件都是互相可见的,这就需要添加第三方来让各自可见了.类似于中介的一个角色.ARouter其实也是如此,利用了Map去保存下来了其中的Class。在startActivity再将其对象提取出来.只是其中过程有注册路由,提原创 2021-11-29 14:23:40 · 1770 阅读 · 0 评论 -
责任链模式
1.责任链模式先介绍基础概念:用来处理相关事务责任的一条执行执行力链,链上的每个节点均有机会处理该请求事务,若某及诶单处理完了可以根据实际业务传递给下一个节点或者直接返回处理完毕2.使用场景即一个请求被多个对象所处理,具体是哪个对象在处理是运行时去动态决定的.例如:员工请假请求,需要多对象同意.A经理同意–>转移到人事部门处理/审批完成了.A经理资格不够(老子职位高)->B经理处理–>处理/转移到下一个3.经典流程经典流程来说,是Handler(处理者)内有下一个处理原创 2021-11-26 09:30:35 · 236 阅读 · 0 评论 -
Android中kotlin Flow的资源浪费/ANR问题
1.前提一开始用Flow,主要用来替代LiveData,用来观察。然后发现了StateFlow和SharedFlow这两个主要就是用来替代LiveData的.两者区别:StateFlow:1.必须要有初始值2.只会把最新的值重现给订阅者,与活跃的订阅者数量无关SharedFlow:1.没有初始值2.可以保留历史数据3.发射使用emit()/tryemit(),而没有setvalue()当我在使用FLow去collect数据的时候,发现文档有这样一个提示警告:如果需要更新界面,切勿使原创 2021-10-18 14:13:54 · 694 阅读 · 1 评论 -
rxjava+LiveData VS 协程+flow, +Retrofit+Okhttp3,两种方案的不同使用.
1.前提作者最近在学习kotlin,刚看到协程,又看到了flow.发现这两个东西是可以完成取代rxjava和LiveData的。然后我就来找不同,一起体验一下两种东西加在一起的不同. 当然了,如果你使用的是JAVA,就老老实实用RXJAVA+LiveData把。 协程是Android里面kotlin特有的。2.对比是骡子是马,拉出来遛一遛,咋们来稍微对比一下这两种不同东西.基础的概念我就不放了,大家可以先去了解一下,我这里只提一些重要的。RXJAVA:链式编程,切换线程贼方便.实现异步操作,原创 2021-09-15 10:38:11 · 1320 阅读 · 0 评论 -
Android 修改应用为系统级应用,模拟器root,修改语言配置,发送adb shell命令,
前言:工作上需要开发一个系统级的应用,但是在调试上很不方便,自带的Android板并不符合最终的定制,而且模拟器也能得到更好的开发体验.那直接在模拟器上如何将自己的应用改成系统应用,也更方便的开发自己的应用呢?..1.准备好模拟器普通来说我们下载的后面导游的Google Play,是无法进行root的,那自然就只能开发手机正常应用,而无法将自己的应用改成系统应用。所以要重新下载一个可以root的应用.一般选择下载模拟器我们会在Recommended内,所以我们点击x86 Images的镜像,选择后缀原创 2021-08-16 14:26:14 · 1725 阅读 · 0 评论 -
Android 根据应用内选择时间调整TextClock时区
最近在项目中遇到了一个问题,需要自己去调整整个应用的语言选择以及对应的时钟的问题,网上找了一些资料发现有一些坑以及问题,自己在这里记录下来这里产生的问题都是在单Activity的架构下存在的.1.调整应用内的语言选择在Android的API 25中,getResources().updateConfiguration()你会发现已经过时了,不建议使用了。所以我也不记录这个操作了… 要看到现在推荐的是 createConfigurationContext这个方法,但是你直接使用之后发现还是没有什么锤原创 2021-07-27 15:04:43 · 988 阅读 · 1 评论 -
记录Android 组件化中使用Navigation中的一个坑.
问题如下:所有Fragment分布在不同的Module内.例如:Fragment_1在Module_1中.Fragment_2在Module_2中.navigation文件有且只能在app这个依赖所有module的壳中.因为不在app内,则无法引用所有的Fragment.那跳转可以使用int yId = getResources().getIdentifier(“actionname”,“id”,“packname”);寻找资源Navigation.findNavController(bi原创 2021-07-16 11:49:08 · 796 阅读 · 0 评论 -
Android 关于如何弄出一个正常好用的文件管理器.
1.文件管理器的选择由于本人是一个懒人,而且又不是很喜欢写重复的轮子,更喜欢把人家的轮子拿过来改一波。所以我直接选择Start最高的兄弟的文件管理器.https://github.com/fishwjy/MultiType-FilePicker这里其实可以自己写一下可能自己的思路,大致上应该是RecycView去配上查找所有文件然后进行分类的这样的思路,当然这里FilePicker寻找的文件搭配上的Android自带的媒体库,这样就不用那么麻烦了…2.FilePicker修改文件后不更新查了很多原创 2021-07-10 15:59:21 · 255 阅读 · 4 评论 -
MVVP框架学习(二)---------ViewModel以及LiveData中如何使用
一.序上篇文章说到,我们可以通过DataBinding去绑定我们的xml以及使用我们的数据源。那ViewModel和LiveData就是在JVVM中专门用来做数据源的两个组件。二.ViewModelViewModel 是Android 架构组件中负责管理UI相关数据与逻辑的,可以说它就是专门做这个界面的数据存储和驱动的。个人认为,这是一个界面对应一个ViewModel.ViewModel的优点:解决了运行中断和界面重建时的数据保存问题 (横竖屏切换,导致Activity销毁并重新创建时,ViewM原创 2021-03-31 15:19:03 · 246 阅读 · 0 评论 -
MVVM框架学习(一)---------DataBinding以及RecycleView中如何使用
一:序从一开始,小菜鸟我从MVC到用轮子,再到学习MVP,最终发现网上好多人都说使用MVVM的感觉都不一样,所以到最后我就试着学习一个MVVM,发现代码的整洁度确实不同凡响。所以在此记录如何使用以及自己的一些感悟。二:MVVM基本介绍Android 官方把他们设计的架构模式封装成了一系列类的集合,其核心思想为MVVM,基于此扩展成为Android系统量身定做的架构模式,名为: Architecture Components(架构组件)。有什么优点减少样板代码,消除代码冗余(比MVP代码体积小很原创 2021-03-29 10:32:54 · 745 阅读 · 0 评论