一个努力成为大牛程序猿

Results 13 comments of 一个努力成为大牛程序猿

1.对于本地大图,可以将png格式的转化为webp格式的 2.对于网络大图,利用options对图片进行压缩,如果加载的图片很多,需要Lrucache对图片进行缓存处理 3.对于超大型图片,可以局部加载,当用户移动时,再去进行加载。

with:with函数会把它的第一个参数装换成作为第二个参数传给它的lambda的接收者,可以通过this来访问这个接收者。with返回的是执行lambda代码的结果。 apply:apply函数基本与with一致,但是apply返回的是接收者对象。

用户体验方面,可以在顶部显示一个一个progress,显示网页加载进度,而不是一个白屏呈现给用户看。 设置一个全局的WebView,减少WebView初始化的时间,避免后续操作的堵塞

1.支持多窗口模式 2.对电量进行优化,当手机处于空闲状态,将降低cpu和网络活动 3.不推荐使用file:// URI传递数据,转而推荐使用FileProvider

如果不考虑布局的排版要求,那肯定是FrameLayout大于LinearLayout,LinearLayout和RelativeLayout相差无几。 1. FrameLayout中的子元素都堆在屏幕的左上角,子元素不能指定位置,绘制起来当然效率高。 2.在阅读RelativeLayout和LinearLayout的源码中,我发现有这么一段注释: //So, instead of running the code twice, we just set the width to a "default display width" 我们没有运行代码两次,而是将宽度设置为“默认显示宽度” 楼上说的都是RelativeLayout会绘制两次,这到底是怎么回事??? @Petterpx @Moosphan @kongxiaoan

出现的原因:ui线程响应超时,出现超时的原因可能是ui线程发生阻塞不能及时处理当前事件,超过5s。 在BroadcastReceiver执行了耗时操作,超过10s没处理完成。

1.利用DiffUtil对数据进行刷新。 2.减少布局的层级。 3.如果Item的高度一致,可以设置setHasFixedSize(true),这个方法的意义就是当调用onItemRangeChanged(), onItemRangeInserted(), onItemRangeRemoved(), onItemRangeMoved()这几个方法时,可以避免重复的requestLayout,节省资源 4.滚动状态停止加载图片,只有当处于停止状态才去加载图片。 5.如果不要求动画,可以通过 ((SimpleItemAnimator) rv.getItemAnimator()).setSupportsChangeAnimations(false); 把默认动画关闭来提神效率. 6.对 TextView 使用 StaticLayout的自定义 View 来代替它,因为在TextView的内部也是靠StaticLayout来实现的

1.HashMap和Hashtable都实现了map接口。 2.HashMap和Hashtable继承类不一致。 3.Hashtable中实现了同步方法,所以在多线程并发环境下是安全的, 但是Hashmap里面没有实现同步方法,在单线程操作中,HashMap比Hashtable要更加快速 4.Hashmap中的key是可以为null的,但是Hashtable的不能为null 5.HashMap的初始长度为16,Hashtable的初始长度为11

HandlerThread其实是Handler+thread,在内部的实现方法中就是通过获取thread的looper,来初始化Handler,HandlerThread的使用可以参考IntentService