工作的学习
文章平均质量分 65
HUandroid
求偶遇一个美好的未来
展开
-
Android 启动速度优化
android启动优化,结合自己的经验,一点自我总结原创 2023-01-29 10:49:03 · 1501 阅读 · 1 评论 -
studio4.2.1 gradle侧边栏没有task问题记录
studio4.2.1 gradle侧边栏没有task问题记录最新版的studio4.2.1默认将gradle侧边栏的task关闭了,来提高同步速度。可以在设置里面打开:取消勾选,就有task了。原创 2021-07-11 22:04:03 · 507 阅读 · 0 评论 -
转载:Android 声明性布局Compose预研
一篇在上家公司写的,预研方案,放在公司的技术账号下面了。随着kotlin的流行,Compose越来月成熟,KCP(Kotlin Compiler Plugin)和KSP(Kotlin Symbol Processing API)的未来加持下,会走的很远。Android 声明性布局Compose预研...原创 2021-07-11 21:58:24 · 138 阅读 · 0 评论 -
剖析Framework面试-笔记(一)
剖析Framework面试-笔记系统服务相关对zygote的理解作用启动流程Zygote怎么启动的进程启动之后做了什么细节与问题Zygote fork 要单线程Zygote的IPC为啥没有采用binder通信?孵化应用进程为什么不交给SystemServer来做,而专门设计一个zygote?android系统的启动android有那些主要的系统进程?这些系统进程怎么启动的?ServiceManager启动流程zygote启动流程SystemServer启动流程zygote启动部分SystemServer的部原创 2021-05-14 10:21:22 · 1096 阅读 · 1 评论 -
记一Bug:StaggeredGridLayoutManager :java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
记一Bug:原创 2021-01-29 15:42:42 · 1972 阅读 · 4 评论 -
android LeakCanary原理解析
LeakCanary原理解析LeakCanary是square公司开源的一个内存泄露检测的开源库。理论理论一:引用分类:强引用:强引用还存在,垃圾收集器永远不会回收掉被引用的对象。宁愿抛出OOM异常也不会回收。软引用:(SoftReference)在JVM将要内存不足时,会进行一次GC,这次GC会回收软引用对象。内存充足时,不会回收软引用。弱引用: (WeakReference)在JVM发生GC时,无论内存是否足够,都会回收弱引用。虚引用:(PhantomReference)虚引用时极其原创 2021-01-13 11:17:18 · 504 阅读 · 1 评论 -
记ViewStub的一个问题
记ViewStub的一个问题莫名其妙线上报错,一个空指针原创 2021-01-04 11:02:52 · 199 阅读 · 0 评论 -
okhttp实现连接池原理
okhttp实现连接池原理为啥需要对于tcp/ip的网络请求,是短连接请求,每次理论上是需要三次握手和四次挥手的。频繁的进行建立Sokcet连接和断开Socket是非常消耗网络资源和浪费时间的。然后HTTP的keep-alive也是用来优化的连接的。普通的HTTP请求是客户端连接到服务端了,请求结束后关闭连接。流程是反复的。带keep-alive头HTTP请求,服务端接受到这个字段,在一定的时间内,会维持这次连接,这期间的请求不会再次连接,而是直接复用了。由此可见网络请求的优化是至关重要的。原创 2020-12-30 16:28:09 · 3752 阅读 · 0 评论 -
Glide遇到的问题与解决方法
遇到的问题在使用中遇到的问题记载。适配androidx问题遇到android.support.annotation.NonNull找不到问题由于目前新项目已经都迁移到了androidx原因,已经移除了support包了。这里需要作出以下修改:修改gradle.properties文件,添加如下:android.useAndroidX=true# Automatically convert third-party libraries to use AndroidXandroid.enab原创 2020-12-27 21:24:00 · 1649 阅读 · 0 评论 -
android 搭建本地maven库
android 搭建本地maven库先学习本地maven库搭建,在学习远端maven搭建。情景在大型的项目中,多人开发环境下,安全为第一条件下必然会产生以下几个问题:项目越来越大,导致项目依赖越来越多,配置项剧增,最后就是编译时间非常漫长。项目依赖的第三方库,自己拆分的库很多,不利于管理和维护。开发人员太多,项目一大坨,不利于责任的划分和管理。代码无版本控制,规范很重要。代码全部在本地,很容易产生代码泄露,很不安全。(本地maven也是如此)所以大家熟知的组件化方案就产生了,各种开源方原创 2020-09-14 20:09:46 · 1204 阅读 · 0 评论 -
android CrashHandler处理异常
CrashHandler处理异常情景Android应用无法避免不会发生crash,可能属于系统底层的bug、或者机型适配、亦或者糟糕的网络环境。当crash发生时,系统会kill我们的应用程序,会闪退或者提升用户程序已停止运行,而且更恐怖的是,对于开发者而言,是无法知道当时用户所操作或者面临的网络环境的,也无能为力的去解决改bug。但是Android系统提供了这类问题的方法:UncaughtExceptionHandlerCrashHandler public interface Uncaugh原创 2020-09-03 18:15:16 · 925 阅读 · 0 评论 -
android内存优化-对象池模式和享元模式
在内存优化的道路中,往往会遇到对大量使用对象的情况,为了减少内存的分配,减少垃圾回收器调用次数,合理的使用对象设计模式去设计对象,减少内存抖动的风险。对于对象的重用,主要有2中设计模式:对象池模式和享元模式对象池模式思想:为避免一个可能会被重用的对象,被垃圾回收。从而节省了创建对象所花费的时间和内存的重新分配。使用一个对象池的对象(万物皆对象)去负责管理大量可重用的对象,是重用的对象被请求在再...原创 2020-02-07 17:42:58 · 502 阅读 · 0 评论 -
讨论android的设备唯一码
讨论android的设备唯一码设备唯一码:是用一串字符或者号码来映射唯一的硬件设备。有啥用?统计用来统计用户行为,设置大数据标签。一般情况下都是用应用账号作为唯一码,但是只能适合部分强登录应用,对于那种非强登录的app而言,比如购物类,看房类app而言,设备唯一码是用来做大数据统计的唯一选择了。风控防止羊毛党重复注册、重复撸羊毛、恶意访问安全等问题。风控则是最需要稳定可靠的设备唯一码...原创 2020-01-08 17:13:16 · 1074 阅读 · 0 评论 -
记Unable to resolve dependency for...的问题
前几天接一个简单视频的需求,所以考虑到简单实用,就去使用Google爸爸提供的ExoPlayer播放器实现。按照文档配置,结果拉不下来代码。后来才知道升级了gradle后需要指定代理,操作如下:打开搜索http proxy如下这里选择,并填如下参数确定应用,重新build,就可以拉代码了。本以为事情就完了,后来发现自己公司的本地maven仓库的sdk拉取不下来了,一直卡在bu...原创 2019-10-11 17:24:21 · 373 阅读 · 0 评论 -
处理fragment获取getActivity为null的问题
问题:应用从后台进入前台时,fragmeng中getActivity()获取null ,导致崩溃问题原因:当系统资源紧张时,或者被gc回收activity,但是进程还保留时,Activity都可能会被系统回收然后重建,在系统要把App回收之前,系统会把Activity的状态会保存下来,但Fragment并不会随着Activity的回收而被回收,创建的所有Fragment会被保存到Bundle...原创 2019-08-07 17:41:42 · 827 阅读 · 0 评论 -
SharedPrefrences的源码分析
SharedPrefrences的分析源码分析文件操作缓存机制SharedPreferencesImpl实现类值操作取值修改提交操作commitcommitToMemoryMemoryCommitResultenqueueDiskWritemcr.writtenToDiskLatch.await()mcr.writeToDiskResultapplycommitToMemoryenqueueDis...原创 2019-07-31 14:47:24 · 852 阅读 · 0 评论 -
Android 自定义控件基础知识
Android 自定义控件基础知识 我一般写自定义控件步骤是这样的:规划onDraw onLayout里面需要用到那些知识点根据设定的自定义效果,提前规划出自定义属性(也可以最后提取)onMeasuae的测量模式实现onDraw绘图效果onLayout的实现(是否需要)检测 是否需要开启硬件加速,是否存在内存泄漏 ,对外暴露方法自定义控件...原创 2019-05-12 16:35:46 · 212 阅读 · 0 评论 -
RxJava2的基础知识
RxJava2的三要素:观察者模式思想,函数响应式编程1. Observable 被观察者,它决定什么时候触发时间,在上游发送命令,决定异步操作模块的顺序和异步操作的次数。 2. Observer 观察者,它可以在不同的线程中执行任务,在下游待命状态的接受事件,响应被观察者的通知。 3. subscribe订阅事件 创建好了Observable和Observer ,需要将他们...原创 2018-05-25 00:01:00 · 429 阅读 · 0 评论 -
RxJava学习(一)---Hello World
学习一种新的编程思想或者语音,先来个Hello World。写一个RxJava的Hello World:public static void main(String[] args){ Observable.create(new ObservableOnSubscribe<String>() { @Override ...原创 2018-05-16 23:13:14 · 375 阅读 · 0 评论 -
RadioGroup与Fragment使用
RadioGroup与Fragment使用RadioGroup中使用类组单选按钮。如果我们选中一个单选按钮属于一个单选按钮组,它会自动取消选中同一组内的任何先前检查的单选按钮。RadioGroup 属性属性描述android:checkedButton这是子单选按钮应该在默认情况下此单选组内进行检查的ID原创 2017-02-20 10:35:03 · 2064 阅读 · 0 评论 -
Android网络状态监听
Android网络状态监听Android经常需要去判断网络的状态,比如下载。请求到一半了,网络中断了,要做什么处理,网络有通了,能不能继续自动监听继续下载。所以网络监听对很多网络请求还是很重要的。这里不知道网络什么时候来,什么时候断。故要设计一个广播来监听网络状态,当网络状态发生改变的时候去通知该做什么处理。0,写一个判断网络的工具类(可以直接写在广播中)1,写一个广播类去监听网络原创 2017-02-20 15:03:13 · 987 阅读 · 0 评论 -
switch控件的使用
Android----UI控件switch选择开关使用首先switch控件是原生的控件,可以直接使用。最低要求是安卓4.0以后才能使用。原生用法也很简单,直接在xml添加switch控件就行了原创 2017-02-13 10:25:57 · 4060 阅读 · 0 评论 -
自定义popwindow
自定义popwindow前言:很普通的popwindow,温故下。 1. PopupWindow是一个以弹窗方式呈现的控件,可以用来显示任意视图(View),而且会浮动在当前活动(activity)的顶部。 2. 基本属性: 设置宽的值,可以是WRAP_CONTENT、MATCH_PARENT、也可以是具体数值 popupWindow.setWidt原创 2017-04-28 13:39:43 · 706 阅读 · 0 评论 -
ViewPager的切换效果
viewpager的切换效果原创 2017-05-25 11:22:19 · 544 阅读 · 0 评论 -
Android返回键处理、任务和home键处理
处理返回键的事件,监听任务键和home键的监听。原创 2017-05-26 13:12:59 · 6245 阅读 · 0 评论 -
加载apk插件的资源
加载apk里面的资源文件原创 2017-06-06 10:51:29 · 462 阅读 · 0 评论 -
Android 7.0自动安装
Android 7.0自动安装 区分7.0之前和之后的区别,通过 清单文件中注册 provider,解决7.0跳安装界面报错的问题原创 2017-06-06 13:42:37 · 3790 阅读 · 1 评论 -
Android双进程守护
我们以技术不可耻的原则来讲下双进程守护保活应用,达到类似QQ的保活效果。当然QQ保活主要是厂商定制后添加了应用白名单,在底层上就得到了保活的支持。双进程另一个好处就是可以分配更多的内存,我们知道每一个进程都会分配对应的内存,所以当2个进程时会保证应用的流畅行。原创 2017-06-20 14:46:24 · 567 阅读 · 0 评论 -
Android5.0以上去掉阴影效果
style=”?android:attr/borderlessButtonStyle”原创 2017-07-03 17:10:44 · 815 阅读 · 0 评论 -
仿知乎广告效果
仿知乎广告的效果,先看效果图 效果如下: 向上滑动,图片的头部先出来,然后随着滚动,也一起滚动,到图片滑出屏幕时候,图片内部也到达底部。 向下滑动,图片的底部先出来,然后随着滚动,也一起滚动,到图片滑出屏幕时候,图片内部也到达头部。所以有几个要点 1, 图片内部肯定是使用canvas.translate 2,图片随着list滑动而滑动 3, 图片要设置属性 andr原创 2017-12-06 14:35:34 · 1006 阅读 · 0 评论 -
签名方案Signature Versions V1&V2
最近studio升级到3.0版本后,突然发现项目打包的时候出现以下勾选项: Signature Versions V1&V2 必须要选一种签名方式,才能进行打包。 查了下资料才知道Android7.0更新了打包方案,参考资料如下: https://developer.android.google.cn/about/versions/原创 2018-01-09 14:33:09 · 11271 阅读 · 1 评论 -
动态更换app启动图标
动态更换app启动图标类似于双11与双12活动,app的启动图标会自动进行更换。原理很简单,通过PackageManager来启动或者禁止组件。预埋多个app入口,放置不同的icon。通过改变启动的activity来更换图片常规启动 。原创 2017-12-18 11:25:24 · 1702 阅读 · 0 评论 -
安卓8.0系统notification适配Failed to post notification on channel “null”
刚刚升级了8.0系统后,模拟器突然出现以下错误“Failed to post notification on channel “null”” 由于8.0通知栏增加了channel渠道式消息分发机制,在Android文档中编写的: https://developer.android.com/preview/features/notification-channels.html所以要去对8.0系统进原创 2018-01-04 16:18:15 · 6900 阅读 · 1 评论 -
fragment通信的几种方式(接口框架)
fragment通信是我们经常遇到问题,各种解决方案都有。 首先明确的重要点:谷歌官方建议两个fragment不要直接通信,会造成碎片耦合。 方案一:handler方案 方案二:广播方案三:EventBus方案四:普通接口方案五:万能接口原创 2018-03-12 17:51:16 · 5309 阅读 · 1 评论 -
Retrofit2+Rxjava+OkHttp的使用和网络请求
首先介绍Retrofit: Retrofit是Square 公司开发的一款正对Android 网络请求的框架。底层基于OkHttp 实现。版本要求至少需要java7或者Android2.3。 github地址使用 在项目的build.gradle下dependencies下添加:compile 'com.squareup.retrofit2:retrofit:2.1.0'创建retrofit 实原创 2018-04-16 09:37:48 · 8883 阅读 · 1 评论 -
自定义dialog弹框效果
通常项目中会用到比较特殊的弹框,则就需要自定义写一个dialog,需要重新画个布局添加到dialog中。这里就需要自定义一个TestDialog类继承与Dialog。public class AccountDialog extends Dialog { private static Context context = null; private static AccountD原创 2016-11-27 18:47:10 · 2238 阅读 · 0 评论