转载请注明出处:https://lizhaoxuan.github.io
前言
为避免传统的源码讲解方式的枯燥乏味,这一次,我尝试换一种方式,带着你以轻松的心态了解Flutter世界里的UI绘制流程,去探究Widget、Element、RenderObject的秘密。
废话不多说,听故事!《帝国的纷争》
转载请注明出处:https://lizhaoxuan.github.io
为避免传统的源码讲解方式的枯燥乏味,这一次,我尝试换一种方式,带着你以轻松的心态了解Flutter世界里的UI绘制流程,去探究Widget、Element、RenderObject的秘密。
废话不多说,听故事!《帝国的纷争》
转载请注明出处:https://lizhaoxuan.github.io
对于万物皆Widget的Fultter,同样的事情一般都有多种控件可以实现,太多的选择总是会让人陷入或多或少的选择纠结症和对性能的忧虑上。
初次接触Flutter,首先必然要面对的两座大山:StatelessWidget & StatefulWidget。 而在这两个控件的选择上,大部分人给出的解释就是:“就像他们的名字一样,无状态静态的视图展示使用StatelessWidget,而有交互,需要动态变化的使用StatefulWidget.”
这样的解释正确,但过于模糊,似乎StatelessWidget出现的地方均可以用StatefulWidget来代替,于是为了后期可能的变化、为了coding简便,StatefulWidget被滥用变成了很容易发生的事情。
所以今天我们就详细聊一下StatefulWidget和StatelessWidget的区别和使用。
转载请注明出处:https://lizhaoxuan.github.io
提起AccessibilityService,你最容易联想到的肯定是微信抢红包插件!但这个服务的设计初衷,是为了帮助残障人士可以更好的使用App。
一些“调皮”的开发者利用AccessibilityService可以监控与操作其他App的特性加上系统远超人类的反应速度,在某些竞争类场景开发出了作弊外挂,最常见的就是你所嫉愤的微信抢红包插件了。
微信抢红包插件对原本平等的竞争环境产生了不公,不过这是微信团队要操心解决的事。可万万没想到,有一天,我正在写的App也遭此毒手!!!这都欺负到头上了能忍吗?不能啊!
OK,所以我们今天先来分析一下AccessibilityService运行原理,然后分享一些我在应对此类竞争场景下基于AccessibilityService等自动化作弊工具的防御措施。
转载请注明出处:https://lizhaoxuan.github.io
早些时候对Android下GC调用时机比较好奇,所以写了一些case测试各种情况下Android GC调用时机与现象,感兴趣的话可以跳过去瞅瞅 : 《Android GC机制实践调研》
在这个过程中发现一个让人非常震惊的问题:从资源文件中加载一张110kb的图片创建Bitmap对象,占用的内存高达40MB!
为什么为什么为什么??
于是这篇博客便产生了,我希望可以通过一系列测试case,来了解Bitmap在各种场景下的各种使用姿势将会在内存占用和加载速度两方面都有哪些表现,从而从中探索可能的优化点和最佳实践。
转载请注明出处:https://lizhaoxuan.github.io
一直以来都在接受一个论调:在Java的内存管理中,基础类型变量保存在栈中,对象类型保存在堆中。
这其实是一个很粗的论调,会引起很多错误的理解。
这篇博客的产出,仅是因为脑子里偶然间冒出来的一个问题:java栈内存的内存回收是怎么做的?
因为这个问题,引发了一系列的小问题:所有的基础类型变量都保存在栈中吗?栈和堆上都在运行着我们熟悉的GC吗?怎么都感觉GC算法在栈这种结构上没法跑啊……堆内存,栈内存究竟是什么样的?
转载请注明出处:https://lizhaoxuan.github.io
这篇博客,我会站在小微团队的角度,介绍一下我对App自动化测试的一些看法。在帮助你降低对App自动化测试的期望的同时说服你开始实践App自动化测试。
转载请注明出处:https://lizhaoxuan.github.io
作为这个系列的第一篇,先介绍一下大纲:
转载请注明出处:https://lizhaoxuan.github.io
上一篇Calabash Run起来以后,如果你立刻在自己的项目上进行尝试,我相信你一定会像我之前一样,一头雾水,那么从这篇开始,我们来对Calabash深挖。 大概从这几个方向开始:
转载请注明出处:https://lizhaoxuan.github.io
上一篇我们讲了Calabash的基本用法,有了上一篇的经验,已经可以写基本的测试脚本了,只不过一些特殊情况会写的不那么方便,这一篇我们讲一些Calabash的进阶用法:大概是这几个方向:
转载请注明出处:https://lizhaoxuan.github.io
为了保证前面几章阅读上的流程度,我们将Calabash从环境搭建到具体使用中所遇到的所有问题做了一个总结,这里大部分是我实际所经历的坑,同时我也会尽可能的收录一下我在学习过程中从别的博客看到的问题。