- 博客(32)
- 收藏
- 关注
原创 记一次写Android布局经历
Android布局真的那么好写吗?不是想象地那么简单。难点1.考虑机型适配2.考虑性能:过度绘制、大量嵌套3.现有布局样式无法满足4.布局时各元素架构合理性,比如元素命名,一个margin,谁来最合适?父容器?子view?换为padding?这决定了可维护性。5.是否要自定义View,是否要拆分,涉及了外部架构。这也决定了可维护性。6.还有大厂的规范人人都看不起布局,其实这个最难了,做出来容易,做...
2018-06-29 01:06:08 191
原创 对Android沉浸式布局的思考
最近分到一个需求,修改本模块的Title样式与风格。之前的bg是全屏的,通过设置状态栏透明来扩展bg颜色到状态栏上。现在的bg要求不再充满,这就难住我了。因为之前的bg是gradient的drawable,而drawable设置为View背景的时候,默认是填充的,所以想修改大小是很难的。1.layer-list如果设置bottom,屏幕不好适配;如果设置top,需要背景色,过度绘制2.图片apk体...
2018-06-26 22:47:04 142
原创 记录一次Crash分析
今天公司新版本发布,一个周末的时间,bugly上就冒出了一些bug。这是一次弥足珍贵的经历。 bugly上不仅有栈信息,还有机型信息,可以很好地定位crash发现bug,第一时间要定位bug,第二时间要复现bug出现的bug大部分是npe,有一个类型转换错误,还有一个是数组越界,还有OOM类型转换、数组越界容易解决,OOM不是我们模块的问题,而且这个问题不是那么容易解决的,我自己在跑debug版本...
2018-06-26 00:41:10 237
原创 简单了解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 3366
原创 MAT基本使用
学习自https://blog.csdn.net/itachi85/article/details/77075455?locationNum=6&fps=1这是配置篇https://blog.csdn.net/qq_36523667/article/details/80792658配置好以后,被MAT接受的.hprof文件应该在MAT中被打开了leak suspects选项,用于检测内存泄...
2018-06-24 19:42:49 400
原创 Android 如何使用MAT
先下载MAThttp://www.eclipse.org/mat/downloads.php然后打开压缩包的分析工具然后在Android Studio 3.1.2上打开Android Profilegcdump然后在profile的左上角有个门一样的图标 点击导出到电脑本地我这里是C:\AS\Project\ArcFaceDemo\.gradle\test.hprof然后打开cmdC:\AS\SD...
2018-06-24 17:23:16 2134
原创 大型架构学习——美团猫眼模块化实践
仅作个人记录 学习自https://blog.csdn.net/qq_22744433/article/details/77948442 模块化的优点快速移植这是许多模块化能做到但是没有去做的一点,我认为项目在一个新的工程里做是最好的,用新项目强行约束了developer不能依赖其他模块与基类但是这样一来也会有问题不依赖模块,怎么跳转到其他模块比如我完成了车票的订单,现在要在订单完成页“交叉销售”...
2018-06-23 13:46:35 643
原创 高性能地使用HashMap
设定初始容量HashMap扩容是有代价的,需要创建一个新桶,然后一个个去放所以当你小额度地传递数据,另一端取出来,这种,1.小额2.可知数量的key-value需要给HashMap一个初始容量k,k*因子>=key-value对数当然了,k必须是2次的降低因子对于长期留在内存的HashMap,可以降低因子,这样冲突的几率更小,性能就更好一点,只不过更占内存了 intObjectMap防止了i...
2018-06-21 23:28:41 311
原创 静态页面性能最好
仅作个人记录纯属胡扯一些Native和H5的区别Android的都是静态页面,数据才是核心,其实UI简陋点,直接给数据也是一样的,但是为了美观,所以有了这么多花哨的UI。然而H5是把UI也动态化了,这也意味着我们不仅要从服务器获取数据,还需要获取UI,在我看来这是很恐怖的事。但是H5的优点也不言而喻,适合展示新闻类型页面,因为排版会经常变;可以动态修改,所以一些APP连界面都是H5。但是我说的思想...
2018-06-20 22:52:08 346
原创 EventBus如何取数据?
仅作个人记录EventBus是很好的框架,可是美中不足的是他适合1对多,否则性能不好;而且无法取数据。很快我发现了EventBus的tag属性可以解决1对多性能不佳的情况不久后我又想,EventBus可以post一个对象,然后接受者可以拿到这个对象,然后把一些东西放到这个对象里去不就行了吗,我不就拿到了吗?最好可以用HashMap,这样需要修改的时候,只需要维护一端就可以了。我打算这两天有空了用新...
2018-06-20 22:21:47 523
原创 单一职责
仅作个人记录最近封装了一个项目的Toolbar,在开发中有着各种各样的收获,比如对建造者的意义的深入理解,对Toolbar源码的阅读与Toolbar布局规则的改善。。。其中的一点收获是单一职责。我封装了一层Toolbar的原生样式改善层,一层自定义View添加层,其功能拆分得可谓完美,在无数次划分职责的思考中最终选择了这样的划分,真的很棒。第一层,职责是Toolbar的原生样式,他的Navigat...
2018-06-20 22:13:23 344
原创 用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 962 2
原创 接口隔离
最近接触了一个较大的项目,网络请求是这样的NetworkManager.sendRequest(BaseRequest)以Volley为核心封装的网络框架存储、获取一些disk信息是这样的DiskCacheManager.cache(Object)以SharedPreference为核心封装的本地小型存取数据的框架所有的网络,Disk缓存,图片加载等都不需要自己去写了,因为别人都写好了,我无须任何...
2018-06-19 23:28:59 170
原创 封装项目通用Toolbar与项目协作
仅做个人记录封装一个大型项目的Toolbar项目原来的Toolbar的不足之处1.Title默认无法居中2.左边只能是Icon,不支持文字3.右边不能显示图片、文字这3点是通过设置自定义View来实现的,除此以外,还有原生样式不可变,子类代码、逻辑冗余等缺点但是Toolbar又无法割舍,其丰富的API和UI互动特效在现在和未来都是有需求的直接在Toolbar里嵌套其他布局,也不行,因为其原生的Ic...
2018-06-15 23:33:37 286
转载 SourceTree的基本使用
转载自https://www.cnblogs.com/tian-xie/p/6264104.html重点关注里面的在dev分支上开新分支的操作SourceTree的基本使用1. SourceTree是什么拥有可视化界面的项目版本控制软件,适用于git项目管理window、mac可用2. 获取项目代码1. 点击克隆/新建 2. 在弹出框中输入项目地址,http或者ssh地址都可以 如果箭头指向的...
2018-06-14 11:56:39 236
转载 GitLab配置ssh key
转载自https://www.cnblogs.com/hafiz/p/8146324.htmlGitLab配置ssh key一、背景 当前很多公司都选择git作为代码版本控制工具,然后自己公司搭建私有的gitlab来管理代码,我们在clone代码的时候可以选择http协议,当然我们亦可以选择ssh协议来拉取代码。但是网上很少找到如何用git客户端生成ssh key,然后配置在gitlab,我当时...
2018-06-14 11:13:46 458
原创 对架构的一点思考
仅作个人记录,读者看之几乎无益本文灵感来自1.某大型项目的源码的长达1-2天的阅读2.微信架构演变一文一开始我想到了纯模块化,比如说一个项目,把每个模块都拆分的清清楚楚,模块之间不产生任何依赖,仅仅暴露接口。这也是微信一文的一个思想。在项目扩大的时候,模块会衍生许多小模块,这些小模块就变成了新的独立的模块了。最后我们需要画一张图,把整个系统,画成一颗模块树。利我们开发一个模块的时候是很简单的,跟做...
2018-06-12 23:13:04 305
原创 Android多语言切换
方法1比如口香糖,在资源中,我们用英文表示,chewing_gum,自定义TextView,重写setText,如果是英文模式,就直接使用资源,如果不是英文,就以英文为key,到数据库去查找对应的语言。同时自定义TextView还提供刷新UI的方法,也就是在UI可见的时候,修改语言显示(因为有些页面之前已经加载了,需要更换语言了)。方法2对应不同的语种, 创建不同的资源文件。然后让Resorce对...
2018-06-10 13:06:20 395
转载 Android DialogFragment
转载自https://blog.csdn.net/androidstarjack/article/details/73824885最近学习弹框时发现有三种类型的可供使用, PopupWindow、dialog,DialogFragment。比如说需求:只拦截自身所占空间部分的事件,其余空间的点击事件不处理可以根据改变View的布局排列方式,View是否设置底部背景及居中方式虽然在功能上 Popup...
2018-06-10 11:29:45 725
原创 zip压缩与哈夫曼树
学习自https://blog.csdn.net/21aspnet/article/details/232316在学习之前,我有一个基础,就是哈夫曼树,对于高频的东西,倾向于用短符号表示,对于低频的东西,倾向于用长符号表示。首先压缩的对象自然是文件,是连续的,需要占用空间来存放的。短语式重复这个文件很有可能,会有一段字节多次出现,我们称之为短语式重复。比如写小说,人名、地名会重复出现,所以这种短语...
2018-06-09 21:48:29 856
原创 简单理解MVP
仅作个人记录使用以前用过MVP,发现他的接口太多了,并且基类要封装很多东西,就弃用了所有就正常开发,在一个Activity里写逻辑,尽量简化、拆分但是项目大了以后,改动起来是真的麻烦了所以拆分了UI和数据,纯写一个类封装View,提供刷新UI的API,以及扔接口去处理数据但是渐渐发现操作数据的时候,UI对数据层是不透明的,需要调用UI的API,操作UI的时候倒还好,直接扔动作接口就好了最近阅读了公...
2018-06-09 13:05:21 182
原创 Android Nullaway框架,从此告别NPE
https://github.com/uber/NullAwayproject gradle下3.0以前,repositories标签下添加maven { url 'https://maven.google.com' }3.0以后添加google()同时repositories标签下还要添加maven {url "https://plugins.gradle.org/m2/"}plugins { ...
2018-06-09 12:22:49 1171 4
原创 Android启动优化之Rocket学习
https://github.com/Kyson/Rocket/blob/master/Rocket-Android%E5%90%AF%E5%8A%A8%E4%BB%BB%E5%8A%A1%E8%B0%83%E5%BA%A6%E6%A1%86%E6%9E%B6.md这个项目star的人不多,但是思路不错,所以可以像学习Preloader框架一样学习一下这个冷启动流程是这样的加载app,给出空白wi...
2018-06-08 00:05:02 873 1
转载 Android R文件容量限制修改
转载自http://www.mamicode.com/info-detail-1761843.html最近在项目开发中 Android Studio 的 R 文件突然找不到了。IDE 中出现了以下提示cannot resolve symbol RClean And Rebuild一般来说看到这个错误随便 Google baidu 回来的答案无非就是clean -> rebuild 工程而我的...
2018-06-07 23:11:06 1485 1
原创 Android Aspect
仅作个人记录使用收集了网上一波信息,AOP较好的实现是Aspect,但是Android中配置较为困难,且现有的实现在as3.0中出了问题,所以就放弃实战了,直接学理论吧首先最经典的控件连续多次点击用AOP消化掉多余事件我平时注解用的也不少,但是这个注解就厉害了,甚至不用我获取还有一点就是原理是重新编译了Java代码,所以性能的损耗是在编译器中的,可以说是很不错了,兼顾了抽象与性能给你看个经典的网络...
2018-06-07 22:19:59 1156 1
原创 约瑟夫环
仅做个人记录题就不说了在看网上的参考答案前,我先自己瞎分析了几波,下面是我的思路分析0.链表,时间复杂度太高了1.有没有既能维护链表特性,又能维护数组特性的东西?看来是没有,要不然也不会有这么多平衡查找树了2.平衡查找树,对于这一题肯定是一点都不适合的啊,因为我的每个节点并不需要存储元素啥的3.采用数组,记录每一位之前的所有已占用的节点。白痴思路,复杂度依然高,而且实现难度也变高了4.找数学规律5...
2018-06-06 22:20:01 180
原创 RecyclerView和ViewPager内存管理的区别
之所以想到写本文,是因为看到鸿洋微博的RecyclerView实现抖音效果的文章。里面讲了ViewPager实现会OOM,RecyclerView不会。第一个get的点,RecyclerView打造成ViewPager,这个就不用多说了,SnapHelper封装了这一切第二个get的点,为什么RecyclerView不会OOM呢?这需要掌握RecyclerView一些浅显的原理。RecyclerV...
2018-06-06 18:08:46 1152
原创 EventBus
上文我自己写了一个观察者+反射的框架,最后发现EventBus的包体积其实不大,然后他性能优化上又作了许多措施,最终决定采用EventBus基本使用//api 'org.greenrobot:eventbus:3.1.1'private static final String TAG = "xbh";@Overrideprotected void onCreate(Bundle savedI...
2018-06-02 23:54:57 292
原创 艰难春招,终于offer
晚上8.15,携程offer我的春招之旅,3月开始,6月落幕,长达3个月目前阿里1、2面答的不错,等待后续流程中,但是由于携程整个面试流程很高效,在很短时间内就给了我offer,最终打算放弃阿里了(虽然感觉也是很难进去),还是秋招再战阿里吧这段时间,心很累因为我的学校是双非,而且我在班里又是倒数,平时就知道打LOL,所以大公司offer离我真的太远了所以这段相当艰难的旅程带给了我不小的技术、心态的...
2018-06-01 21:53:04 3204
原创 Android面试题小结
学习自https://www.cnblogs.com/ldq2016/p/9035649.html 1一面 阿里的面试官都很和蔼。一面面试官听声音感觉应该是入职两三年的感觉。上来自我介绍后直接开始问android相关问题。 大概问题如下: · android中的dp、px、dip相关概念dp=dipdp*density=pxdensi...
2018-06-01 00:42:39 804
原创 一般有哪些东西可以作为GC Roots?
学习自https://blog.csdn.net/leishenop/article/details/53728605https://blog.csdn.net/yangbutao/article/details/84962251.当前被调用的方法(Java方法、native方法)的一些参数2.方法区的静态数据结构,如常量池、静态引用3.方法区里的所有Class对象及其静态属性...
2018-06-01 00:28:39 2750
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人