杂
文章平均质量分 61
徐乙
这个作者很懒,什么都没留下…
展开
-
用int代替String,节省内存
仅作个人记录看到Android Activity.H用了一种巧妙的方法节省内存public static final int LAUNCH_ACTIVITY = 100;public static final int PAUSE_ACTIVITY = 101;public static final int PAUSE_ACTIVITY_FINISHING= 1...原创 2018-06-20 20:34:04 · 998 阅读 · 2 评论 -
Android记一次匪夷所思的debug经历——animate的同时gone
我和另一个模块做了交互,用反射实现的依赖注入1.这过程中由于模块不同,编译隔离,我只能通过debug来发现问题2.我们对方案产生了分歧,我进入我们的完成页,需要调接口,然后才会去模块交互,另一模块又会调接口,同时展示loading。但是在我request的时候没有loading,或者我可以自己loading,但是需要和他们的loading统一,这维护不便,最终我在讨论的时候,提出了打2次信号的方式...原创 2018-07-14 00:00:57 · 281 阅读 · 0 评论 -
Android开发入门,框架、业务分离
被问到这个问题,首先这个错误就让我很无语。不过这不是我关注的。许多实力强劲的个人开发者都会采用MVVM+RxJava+Retrofit开发出相当精悍的个人项目。首先MVVM的databing机制省去数据更新后的回调,rxjava又是超级美,retrofit又拥有超级良好的封装。但是仅仅针对于网络框架,别这样。我以前也是这么写的,而且写过无数种类型不同的、封装地完善与不完善的网络请求。但是这样不好。...原创 2018-07-14 00:46:41 · 639 阅读 · 0 评论 -
初探WindowManager
学习自Android源码设计模式 首先看Dialog的构造函数Dialog(@NonNull Context context, @StyleRes int themeResId, boolean createContextThemeWrapper) { //获取WindowManager mWindowManager = (WindowManager) context...原创 2018-07-19 23:54:45 · 193 阅读 · 0 评论 -
Android记一次debug——TouchDelegate的坑
bug黑色是button,最外部的是ViewGroup,给ViewGroup设置了一个TouchDelegate以此扩大button的点击区域。但是发现点击了额外多出来的点击区域后,ViewGroup就再也响应不了点击事件了。我一开始猜测是业务的问题,压根没想到Delegate会有坑。于是看了好久的业务,实在定位不到原因所在。最后不得已回顾了Delegate的源码,果然有问题入口public bo...原创 2018-07-14 11:00:07 · 722 阅读 · 0 评论 -
Android View的绘制流程
startActivity后,经过ActivityStarter,ActivityStack,ActivityStackSuperior,AMS等组件。最终到达ActivityThread。其中有ApplicationThread发消息,H处理消息。handleLaunchActivity中会调用到handleResumeActivity,其中会执行WindowManagerImpl....原创 2018-07-20 18:30:30 · 184 阅读 · 0 评论 -
Android 机型适配
学习自头条某文 log一下dp与px,会发现px是dp的几倍,他们之间存在啥关系呢?dp * density = px density的计算方式屏幕斜长/屏幕是几寸的 但是1.设计稿统一360dp标准2.各机型不一定都遵循这个计算规则 如果你想设计稿给多少dp,你就开开心心地在xml中设多少dp,那就:按宽或者高适配360dp * densi...原创 2018-07-20 21:59:39 · 334 阅读 · 0 评论 -
CountDownLatch、CyclicBarrier、 Semaphore、ReentrantLock和AQS
学习自http://www.importnew.com/21889.htmlhttps://blog.csdn.net/yanyan19880509/article/details/52349056https://www.cnblogs.com/waterystone/p/4920797.html123public void await() throws InterruptedException ...原创 2018-07-15 00:26:47 · 468 阅读 · 0 评论 -
Android UI流畅度优化
内存思考下,内存占用率很高的时候,UI会卡吗?先考虑Windows,在内存不足时会采用虚拟内存策略,硬盘到内存的IO是比较占CPU的。手机一般不开启虚拟内存。1.但是手机内存大的时候依然会引发卡顿,因为你的内存很大,当你比如新打开一个活动或者做了需要很多内存的操作,内存就会到达阈值,引发GC,这样也会卡!(你需要关注gc情况带来的卡顿)2.还有内存抖动,瞬间产生大量对象在年轻代...原创 2018-07-21 16:48:53 · 440 阅读 · 0 评论 -
HTTPS
对称加密一把私钥 非对称加密A发消息给B,A会保存私钥,把公钥给B,B发信息过来并用公钥加密,A用私钥解密。(公钥只能由私钥解密)B发消息给A,反之。但是太慢。 非对称解密的对称加密你懂的,不过具体还是在HTTPS中展开吧 HTTPS握手的简单描述1.client给server自己支持的加密、hash算法2.server选择一套,并返回数字证书(公钥...原创 2018-07-21 23:28:59 · 179 阅读 · 0 评论 -
线程池
添加任务的规律先核心,再任务队列,再非核心,再饱和策略 有哪些饱和策略(default)throw exceptionrun{}queue.poll,再次execute 正确关闭(具体可以看https://blog.csdn.net/zaozi/article/details/38854561)最正确的还是通过打标记位,不过interrupt是系统默认替...原创 2018-07-19 14:35:05 · 242 阅读 · 0 评论 -
ReentrantLock
学习自https://blog.csdn.net/yanyan19880509/article/details/52345422 一家人可以不用排队——重入非公平实现:如果井没人用,正在交接,可以插队一波;如果井有人用,只能乖乖排队 对应一下 默认的非公平锁——lock与unlocklockfinal void lock() { if (c...原创 2018-07-18 20:24:08 · 457 阅读 · 0 评论 -
静态页面性能最好
仅作个人记录纯属胡扯一些Native和H5的区别Android的都是静态页面,数据才是核心,其实UI简陋点,直接给数据也是一样的,但是为了美观,所以有了这么多花哨的UI。然而H5是把UI也动态化了,这也意味着我们不仅要从服务器获取数据,还需要获取UI,在我看来这是很恐怖的事。但是H5的优点也不言而喻,适合展示新闻类型页面,因为排版会经常变;可以动态修改,所以一些APP连界面都是H5。但是我说的思想...原创 2018-06-20 22:52:08 · 379 阅读 · 0 评论 -
简单了解JPEG
学习自https://m.baidu.com/from=1000539d/bd_page_type=1/ssid=0/uid=0/pu=usm%401%2Csz%401320_2001%2Cta%40iphone_1_11.2_3_604/baiduid=305108A9860EB1D73675D1E0653B0601/w=0_10_/t=iphone/l=3/tc?ref=www_iphone&...原创 2018-06-24 22:01:09 · 4920 阅读 · 1 评论 -
IO多路复用
IO操作一般可以分为两步:1.进程等待某个流就绪,比如Socket上缓存着网络发送来的流,但是可能还没有到位2.某个流就绪后,拷贝流到进程中来阻塞/非阻塞:查看流准备就绪没有1.进程阻塞2.进程不阻塞,但是会轮询,也就是过一段时间会查看流准备就绪了没有在流拷贝到进程中来的过程,进程都会阻塞同步/非同步:1.不管是查看流的情况,还是拷贝流,都是进程阻塞的2.反之。发起IO请求后,进程继续运行,等待I...原创 2018-07-08 13:24:55 · 137 阅读 · 0 评论 -
对Android沉浸式布局的思考
最近分到一个需求,修改本模块的Title样式与风格。之前的bg是全屏的,通过设置状态栏透明来扩展bg颜色到状态栏上。现在的bg要求不再充满,这就难住我了。因为之前的bg是gradient的drawable,而drawable设置为View背景的时候,默认是填充的,所以想修改大小是很难的。1.layer-list如果设置bottom,屏幕不好适配;如果设置top,需要背景色,过度绘制2.图片apk体...原创 2018-06-26 22:47:04 · 172 阅读 · 0 评论 -
做一个善于总结的人
原来想起的标题是记一次写业务的经历,想了想,做一个善于总结的人更为适合。善于总结,所有程序员看的程序员鸡汤文里都有这个词,大家都觉得他很对,但是都没有思考过,有,也是思考的很浅。这个词在我这两天做业务的时候,冒出来了。这两天我被复杂的业务逻辑搞的想哭。我这里先总结下如何更好地写业务。我的自定义View,采用了3-4种方式去实现,并不是事先想好的,而是粗略一看,感觉这个方法和很完美就去做了,然后发现...原创 2018-07-04 00:10:43 · 1472 阅读 · 0 评论 -
任务分解与保持节奏
从知乎日报的首推https://blog.csdn.net/ricohzhanglong/article/details/80668226上得到一些启发,简要梗概下此文吧实的总有人说,什么方法论啊,价值观啊,人生观啊,都是一些虚无缥缈的东西,与现实中的自己距离太远,而且都是一些“虚幻”的东西,不如谈谈具体的技术实在,比如说什么Spring Cloud啊、Docker啊、Kubernetes啊、An...原创 2018-07-04 00:23:56 · 460 阅读 · 0 评论 -
记一次写Android布局经历
Android布局真的那么好写吗?不是想象地那么简单。难点1.考虑机型适配2.考虑性能:过度绘制、大量嵌套3.现有布局样式无法满足4.布局时各元素架构合理性,比如元素命名,一个margin,谁来最合适?父容器?子view?换为padding?这决定了可维护性。5.是否要自定义View,是否要拆分,涉及了外部架构。这也决定了可维护性。6.还有大厂的规范人人都看不起布局,其实这个最难了,做出来容易,做...原创 2018-06-29 01:06:08 · 205 阅读 · 0 评论 -
排序算法小结
学习自https://www.cnblogs.com/wxisme/p/5243631.html 冒泡怎么浮动一个元素的?void fuction(int a[]) { for(int size = a.length, i = 0; i < size - 1; i ++) { int val = a[i]; int val2 = a[...原创 2018-07-23 15:52:52 · 221 阅读 · 0 评论 -
Android完美适配各版本状态栏
protected void setStatusBarColor(@ColorRes int colorResId) { int color = getResources().getColor(colorResId); //获取ColorInt的RGB float r = (color >> 16) & 0xff; float g = (co...原创 2018-07-05 22:15:16 · 921 阅读 · 0 评论 -
HashMap
本文不介绍HashMap的主要知识,而是1.resize2.线程为何不安全与fail-fast机制3.concurrenthashmap在1.8的实现4.容量为何要2次幂 resize我以前认为是全部重新落桶, 其实深入思考下,不是这样的他的hashcode比如010101010不考虑resize,在put的时候会先(key == null) ? 0 : (h ...原创 2018-07-22 22:16:56 · 154 阅读 · 0 评论