- 博客(440)
- 资源 (22)
- 问答 (1)
- 收藏
- 关注
原创 kotlin修炼指南9-Sequence的秘密
点击上方蓝字关注我,知识会给你力量人们经常忽略Iterable和Sequence之间的区别。这是可以理解的,因为即使它们的定义也几乎是相同的。interfaceIterable<outT>{operatorfuniterator():Iterator<T>}interfaceSequence<outT>{operato...
2022-11-14 08:30:29 1478
原创 kotlin修炼指南8—集合中的高阶函数
点击上方蓝字关注我,知识会给你力量Kotlin对集合操作类新增了很多快捷的高阶函数操作,各种操作符让很多开发者傻傻分不清,特别是看一些Kotlin的源码或者是协程的源码,各种眼花缭乱的操作符,让代码完全读不下去,所以,本文将对Kotlin中的集合高阶函数,进行下讲解,降低大家阅读源码的难度,下面看几个用的比较多的高阶函数使用。首先是sumOf,作为一个很方便的求和函数,它可以快速对集合内的某些参数...
2022-11-07 08:30:26 2056
原创 忙里偷闲IdleHandler
点击上方蓝字关注我,知识会给你力量在Android中,Handler是一个使用的非常频繁的东西,输入事件机制和系统状态,都通过Handler来进行流转,而在Handler中,有一个很少被人提起但是却很有用的东西,那就是IdleHandler,它的源码如下。/***Callbackinterfacefordiscoveringwhenathreadisgoingtobloc...
2022-10-31 08:30:01 885
原创 TheRouter 的跨模块依赖注入实现原理
点击上方蓝字关注我,知识会给你力量本文作者——张涛(货拉拉)TheRouter用于跨模块通信设计的ServiceProvider,核心设计思想是参考了SOA(面向服务架构)的设计方式。具体到 Android 侧就是 AIDL 类似的实现。模块化能力支持项:支持跨模块依赖注入支持自定义注入项的创建规则,依赖注入可自定义参数支持自定义服务拦截,单模块mock调试支持注入对象缓存,多次注入 只会new一...
2022-10-26 08:35:31 626
原创 说回 TheRouter
点击上方蓝字关注我,知识会给你力量❝补充:开源仓库地址:https://github.com/HuolalaTech/hll-wp-therouter-android❞没错,货拉拉开源的路由库 —— TheRouter 是我写的大约在17年底到18年初的时候,我经常会讲一些当时做模块化开发的心得和踩坑历程。比如这几篇都是那时候写的:《Android 模块化平台设计》、《优雅移除模块间耦合》、《企业...
2022-10-17 08:30:33 681
原创 Android-Widget重装上阵
点击上方蓝字关注我,知识会给你力量如果要在Android系统中找一个一直存在,但一直被人忽略,而且有十分好用的功能,那么Widget,一定算一个。这个从Android 1.x就已经存在的功能,经历了近10年的迭代,在遭到无数无视和白眼之后,又重新回到了大家的视线之内,当然,也有可能是App内部已经没东西好卷了,所以大家又把目光放到了App之外,但不管怎样,Widget在Android 12之后,都...
2022-09-05 08:30:12 1795
原创 货拉拉 Android H5离线包原理与实践
点击上方蓝字关注我,知识会给你力量背景在实际业务中,app中的H5页面使用的场景越来越多,在货拉拉app中也存在大量的H5页面,比如金秋拉货节、余额、车型介绍页等,加载速度成为了困扰用户的一个痛点。为此我们决定引入离线包方案,另外还需要解决传统离线包方案不灵活,体积大,不易管理,不易降级等问题,我们设计和开发一套H5离线包系统,经过几个sdk版本的迭代,目前货拉拉H5离线...
2022-07-25 09:30:18 2131 1
原创 货拉拉 Android 动态资源管理系统原理与实践(下)
点击上方蓝字关注我,知识会给你力量so资源动态化方案so资源打包问题在打包so资源的过程中,我们遇到了如下问题。如何移除apk中的so文件,并将他们收集起来?如何将多个so文件压缩打包,并生成对应的信息?如何保证第三方sdk缺少so文件时,不崩溃?so资源打包解决方案移除并收集apk中的so文件看到移除 so文件可能有些同学会问,这不是只要在as中删除libs目录就搞定了...
2022-07-18 08:25:28 1618
原创 货拉拉 Android 动态资源管理系统原理与实践(上)
点击上方蓝字关注我,知识会给你力量❝jary,货拉拉高级客户端工程师,目前负责货拉拉App Android端稳定性提升,包体积优化相关工作。❞前言随着公司业务的扩展,货拉拉用户端apk包的体积也不断变大,过去一年,用户端android组进行了大量的瘦身工作,取得了较为显著的成果。再使用常规方法,已经很难优化包体积了。我们可以把一些使用频率相对较低的资源不打包进apk,并在...
2022-07-12 08:30:04 897
原创 重走Flutter状态管理之路—Riverpod最终篇
点击上方蓝字关注我,知识会给你力量最后一篇文章,我们在掌握了如何读取状态值,并知道如何根据不同场景选择不同类型的Provider,以及如何对Provider进行搭配使用之后,再来了解一下它的一些其它特性,看看它们是如何帮助我们更好的进行状态管理的。Provider Modifiers所有的Provider都有一个内置的方法来为你的不同Provider添加额外的功能。它们可...
2022-06-06 08:30:02 1253
原创 我悟出了公众号取名的套路
点击上方蓝字关注我,知识会给你力量疫情到现在,已经两个多月了,每天看着新闻的报道,看着各大厂的公众号,每天都很充实,好像看了很多东西,但又好像什么也没看,眼瞅着人家的公众号阅读量蹭蹭蹭的上涨,1w+、10w+,再看看自己的公众号零零碎碎的阅读量,我不禁陷入了沉思——为什么我的公众号没人看!我觉得是时候来分析一下了,让我们来看看,如何打造一篇阅读量高的公众号文章标题。作为一...
2022-05-30 08:30:21 728 1
原创 重走Flutter状态管理之路—Riverpod进阶篇
点击上方蓝字关注我,知识会给你力量前面一篇文章,我们了解了如何正确的去读取状态值,这一篇,我们来了解下不同的Provider都有哪些使用场景。这篇文章,我们将真正的深入了解,如何在不同的场景下,选择合适的种类的Provider,以及这些不同类型的Provider,都有哪些作用。不同类型的ProviderProvider有多种类型的变种,可以用于多种不同的使用场景。在所有这...
2022-05-23 08:30:51 1473
原创 重走Flutter状态管理之路—Riverpod入门篇
点击上方蓝字关注我,知识会给你力量熟悉我的朋友应该都知道,我好几年前写过一个「Flutter状态管理之路」系列,那个时候介绍的是Provider,这也是官方推荐的状态管理工具,但当时没有写完,因为写着写着,觉得有很多地方不尽人意,用着很别扭,所以在写了7篇文章之后,就暂时搁置了。一晃时间过了这么久,Flutter内部依然没有一个能够碾压一切的状态管理框架,GetX可能是,...
2022-05-16 08:30:00 2311 2
原创 它来了!Flutter3.0新特性全接触
点击上方蓝字关注我,知识会给你力量又到了Flutter稳定版发布的时候了--我们非常自豪地宣布Flutter 3! 仅仅三个月前,我们宣布Flutter支持Windows。今天,我们很高兴地宣布,除了Windows之外,Flutter现在在macOS和Linux上也是稳定的!img感谢我们的Flutter贡献者的辛勤工作,我们已经合并了5248个pull requests...
2022-05-13 08:30:00 7915
原创 它来了!Flutter3.0发布全解析
点击上方蓝字关注我,知识会给你力量我们在手机、桌面和网络上进行多平台UI开发的历程达到了顶峰。我们很高兴地宣布,作为谷歌I/O主题演讲的一部分,我们今天推出了Flutter 3。Flutter 3完成了我们从以移动为中心到多平台框架的路线图,提供了对macOS和Linux桌面应用的支持,以及对Firebase集成的改进,新的生产力和性能特性,并支持Apple Silico...
2022-05-12 07:15:06 1659
原创 kotlin修炼指南7之泛型
点击上方蓝字关注我,知识会给你力量Kotlin在Java的基础上,同样对泛型语法进行了拓展,所以很多Kotlin开发者,看着源码中的一堆in、out和*,感觉非常不知所措。其实,只要了解了Java泛型,那么Kotlin泛型就迎刃而解了。首先,我们来想想,我们为什么需要泛型。泛型是面向对象编程的一个非常重要的方面,它的出现,是多态的核心实现,简单的说,就是可以在不同的对象类...
2022-05-05 08:30:00 800
原创 为了看Flutter到底有没有人用我竟然
点击上方蓝字关注我,知识会给你力量Flutter这个东西出来这么久了,到底市场占有率怎么样呢?为了让大家了解这一真实数据,也为了让大家了解当前Flutter在各大App中的使用情况,我今天下载了几百个App,占了手机将近80G空间,就为了得出一个结论——Flutter,到底有没有人用。首先,我在vivo应用市场中,下载了4月11日软件排行榜中的所有App,总计230个,再...
2022-04-19 08:30:00 156
原创 FlutterComponent最佳实践之动画那些词儿
点击上方蓝字关注我,知识会给你力量什么是动画,从数学上来说,动画指的是一个属性的变换过程,实际上,就是一个函数,将一个属性值变成另一个属性值的过程。从现实上来说,动画实际上就是将一系列静态的图片,在一定时间内快速切换,从而利用人眼的视觉暂留效应形成动态的画面。对于现代移动设备来说,保持流畅体验的标准是60帧每秒,即每秒要切换60张静态图,这每一帧,在Flutter中被称之...
2022-04-11 08:30:00 1060
原创 FlutterComponent最佳实践之角对齐
点击上方蓝字关注我,知识会给你力量Flutter布局千千万,虽然Box模型相比于原生布局来说,在大部分场景下都是更加方便了,但是有些场景,确实还是ConstraintLayout来的更方便一点,例如下面这个场景:「将不定长度的角标,放置于容器右上角,同时角标中心和容器角顶点对齐」,这其实是一个常见的需求,几乎在UI中的角标场景下都会用到,只不过大部分时候,直接写死一个差不...
2022-04-06 08:30:00 1120
原创 闲言碎语—第六期
点击上方蓝字关注我,知识会给你力量好久没有碎碎念了,在家闭关两礼拜了,终于有点时间来思考思考了。最近的计划最近正在着手做一些Flutter相关的工作,顺便整理了一套「Flutter兵法」,看完保证让你在产品面前横着走。做这些东西的目的,实际上是自己在学习的过程中,对技术方案和架构的思考,同时,学习现有的方案,从而归纳出一套最佳实践,不仅对我是一个提高,也对他人在实践过程中...
2022-03-31 08:48:19 1155
原创 FlutterComponent最佳实践之沉浸式
点击上方蓝字关注我,知识会给你力量沉浸式状态栏,在Android开发中是一个比较麻烦的地方,因为不同的机型和版本兼容问题太多了,API变化也快,但是到了Flutter,一切问题都解决了,因为整个区域都是Skia绘制的,要什么都行,随便来。❝以上问题只针对Android,因为iOS没这问题。。。默认就是沉浸式,只能说,Google的设计师,真是不懂行情。❞我们来看下iOS的...
2022-03-24 08:30:00 3612
原创 FlutterComponent最佳实践之取色我来实现
点击上方蓝字关注我,知识会给你力量构建个性化的UI是非常酷的。你的应用程序不需要对每个人都是一样的。一个轻松定制你的应用程序的方法是,从客户资料/封面照片中提取调色板。它是这样做的。首先,我们从一个网址上加载图片到byte list中。imageBytes=(awaitNetworkAssetBundle(Uri.parse(photo)).load(photo))...
2022-03-23 08:30:00 3368
原创 FlutterComponent最佳实践之TabbarIndicator
点击上方蓝字关注我,知识会给你力量TabBar是UI中非常常用的一个组件,Flutter提供的TabBar几乎可以满足我们大部分的业务需求,而且实现非常简单,我们可以仅用几行代码,就完成一...
2022-03-17 08:30:00 4433 1
原创 Flutter混编工程之Font桥接
点击上方蓝字关注我,知识会给你力量在混编开发中,我们经常遇到要全局替换当前字体的需求,在Native开发中,我们通常会加载Asset或者下载的字体文件,那么在Flutter中,如何直接使用...
2022-03-16 08:30:00 2140
原创 Flutter布局指南之Box套盒子
点击上方蓝字关注我,知识会给你力量对于写过Flutter的开发者来说,我敢肯定,大部分的开发者都不能准确预测这次Hot Reload之后,布局是否是自己想要的结果。Flutter的布局与N...
2022-03-13 10:00:00 3181
原创 Flutter布局指南之谁动了我的Key
点击上方蓝字关注我,知识会给你力量Key用来干嘛Flutter中的Key,一直都是作为一个可选参数在很多Widget中出现,那么它到底有什么用,它到底怎么用,本篇文章将带你从头到尾,好好理...
2022-03-08 08:30:00 2501
原创 FlutterComponent最佳实践之Shadow怎么就这么简单
点击上方蓝字关注我,知识会给你力量设计三件宝,模糊阴影和圆角。这些在原生开发中被设计摧残N年的东西,在Flutter中,居然是轻而易举的实现。添加Shadow在Flutter中,Conta...
2022-03-03 08:30:00 2603
原创 FlutterComponent最佳实践之色彩管理
点击上方蓝字关注我,知识会给你力量Flutter中关于色彩和主题的内容非常之多,我们需要理清不同的Color之间的异同,才能更好的开发Flutter应用。MaterialColor在The...
2022-03-02 08:30:00 2539
原创 Flutter布局指南之深入理解BoxConstraints
点击上方蓝字关注我,知识会给你力量强烈建议先看下这篇文章——Flutter你竟是这样的布局不管你是Android开发,还是Flutter开发,当你开始使用Flutter茫茫多的Widget...
2022-02-26 17:46:55 2039
原创 Flutter混编工程之轻量化改造
点击上方蓝字关注我,知识会给你力量轻量化改造的意义轻量级Flutter渲染引擎的核心是将Flutter作为一个「渲染器」,它的唯一功能就是将Native端传来的数据绘制成相应的界面,其它所...
2022-02-25 08:30:00 1851
原创 不懂设计的产品不是好开发
点击上方蓝字关注我,知识会给你力量通过这篇文章,我将向大家介绍下关于设计的一些基本知识,让广大开发者在平时的开发中,可以更好的和设计、产品合作(撕逼)。1.Color System1.1 ...
2022-02-17 08:30:00 2263
原创 Flutter混编工程之Engine复用
点击上方蓝字关注我,知识会给你力量Flutter混编上最大的一个问题,就是Engine的使用,从内存和性能,以及混合栈等多个层面上的综合考虑,业界给出了很多不同的Engine管理方案,就官...
2022-02-15 08:30:00 2812
原创 Flutter混编工程之高速公路Pigeon
点击上方蓝字关注我,知识会给你力量前面我们讲到了Flutter与原生通信使用的是BasicMessageChannel,完全实现了接口解耦,通过协议来进行通信,但是这样的一个问题是,多端都...
2022-02-11 08:30:00 2626
原创 Flutter混编工程之通讯之路
点击上方蓝字关注我,知识会给你力量这个系列开始,我们将从「能用的Flutter」到「可用的Flutter」的迁移过程来讲解如何在实际项目中更好的使用Flutter,下面是第一篇。对于混编工...
2022-02-10 08:30:00 2205
原创 闲言碎语—年终总结
点击上方蓝字关注我,知识会给你力量2021的年终总结,虽迟但到。其实好久之前就想写一写了,但每次打开这个文档,都不知道要从哪里开始写,就当是流水账吧。今年最大的收获——可爱的儿子。经历了年...
2022-01-29 08:34:28 1751 2
原创 LiveData Coroutine Builder的5个诡计
点击上方蓝字关注我,知识会给你力量这个系列我做了协程和Flow开发者的一系列文章的翻译,旨在了解当前协程、Flow、LiveData这样设计的原因,从设计者的角度,发现他们的问题,以及如何...
2022-01-19 08:30:00 3312
原创 让Flows感知生命周期
点击上方蓝字关注我,知识会给你力量这个系列我做了协程和Flow开发者的一系列文章的翻译,旨在了解当前协程、Flow、LiveData这样设计的原因,从设计者的角度,发现他们的问题,以及如何...
2022-01-14 08:30:00 3047
原创 一篇掌握LiveData transformations
点击上方蓝字关注我,知识会给你力量这个系列我做了协程和Flow开发者的一系列文章的翻译,旨在了解当前协程、Flow、LiveData这样设计的原因,从设计者的角度,发现他们的问题,以及如何...
2022-01-10 08:50:48 3286
原创 谁能取代Android的LiveData- StateFlow or SharedFlow?
点击上方蓝字关注我,知识会给你力量这个系列我做了协程和Flow开发者的一系列文章的翻译,旨在了解当前协程、Flow、LiveData这样设计的原因,从设计者的角度,发现他们的问题,以及如何...
2021-12-29 08:30:00 1985
原创 响应式架构最佳实践——MVI
点击上方蓝字关注我,知识会给你力量这个系列我做了协程和Flow开发者的一系列文章的翻译,旨在了解当前协程、Flow、LiveData这样设计的原因,从设计者的角度,发现他们的问题,以及如何...
2021-12-22 08:28:12 1808
Fragment使用动画问题
2014-09-01
TA创建的收藏夹 TA关注的收藏夹
TA关注的人