- 博客(24)
- 资源 (3)
- 收藏
- 关注
原创 声明式UI和命令式UI
编程范式: 声明式 UI 侧重于“什么”(描述最终状态),而命令式 UI 侧重于“如何”(具体步骤)。开发效率和可维护性: 声明式 UI 通常提供了更高的开发效率和可维护性,特别是在复杂应用中。性能和控制: 命令式 UI 在某些情况下可能提供更好的性能和更精细的控制,但代价是增加了开发的复杂性。随着现代前端和移动框架的发展,声明式 UI 正变得越来越流行,它提供了一个更高级别的抽象,简化了开发过程,尤其是在构建复杂的用户界面时。
2024-02-07 16:13:59 1953
原创 Kotlin泛型
Kotlin中声明和使用泛型类及泛型函数的基本概念和Java类似。同时Kotlin引入了新的概念,比如室化类型参数和声明点变型。这些概念对于我们来说可能很新奇。实化类型参数: 允许你在运行时的内联函数调用引用作为类型实参的具体类型(对普通的类和函数来说,这样行不通,因为类型实参在运行时会被擦除)。声明点变型: 可以说明一个带类型参数的泛型类型,是否是另一个泛型类型的字类型或者超类型,它们的基础类型相同但类型参数不同。例如,它能调节是否可以把List<Int> 类型的参数传给期望List&
2021-08-15 14:57:05 530
转载 Kotlin协程
协程 Coroutines,指各任务协作运行;线程是操作系统层面的,由操作系统调度执行,我们可以开启一个线程,但无法知道线程什么时候执行,什么时候执行完,因此我们通常使用回调的形式在线程执行完之后接受执行的结果,线程的运行是抢占式的,后起的 B 线程可能抢占先起的 A 线程的资源,A 线程会被阻塞,从而造成资源的浪费。协程是应用层面的,它由虚拟机进行调度,我们可以随意开启和终止协程的运行,协程是非抢占氏的,如果当前协程在运行,除非当前运行的协程主动 退让,挂起,否则其他协程不会抢占运行机会,由于各任务写
2021-08-03 17:08:21 657
转载 LiveData的基本使用
我们在《ViewModel的基本使用》这篇文章中提到了,ViewModel的主要作用是存放页面所需要的各种数据,而当这些数据发生变化时,我们采用接口的方式实现对页面的通知。这样做是可行的,但如果要观察的数据很多,则需要定义大量的接口,代码显得冗余。为此,Android为我们提供了LiveData组件,帮助我们完成ViewModel与页面组件之间的通信。所以,LiveData通常是被放在ViewModel中使用。LiveData是一个可被观察的数据容器类。什么意思呢?我们可以将LiveData理解为一
2021-07-28 18:44:17 907 1
转载 ViewModel的基本使用
在页面(Activity/Fragment)很简单的情况下,通常我们会将UI交互,数据获取与处理等相关业务逻辑,全部写在页面中。但是在页面复杂的情况下,这样做是不合适的,它不符合“单一责任”原则。页面只应该负责接收用户的交互,以及将数据展示到屏幕上,相关数据应该单独存放和处理。为此,Android为我们提供了ViewModel类,专门用于存放应用程序页面所需的数据。它将页面所需的数据从页面中剥离出来,页面只需要处理用户交互,以及负责展示数据的工作。另外,如果我们的应用程序支持横竖屏切换,当用户旋
2021-07-28 18:29:43 1234
原创 Kotlin 进阶语法 (1)
Collections 集合主要集合: List, Set, Map需创建可变集合时,添加mutableval list1: MutableList<Int> = mutableListOf(1, 2, 3)val list2: List<Int> = ListOf(1, 2, 3) 集合函数 val numbers = listOf(1, -2, 3, -4, 5, -6) // filter 截取 val positives = number
2021-07-28 13:53:08 296
转载 Kotlin语法入门
Kotlin是什么Kotlin是Android开发的一级编程语言(Google官方认证)由JetBrains公司在2010年推出 & 开源,与Java语言互通 & 具备多种Java尚不支持的新特性Android Studio3.0后的版本支持Kotlin优点码更少、可读性更强 - 花更少的时间来编写代码与理解他人的代码成熟的语言与环境 - 自 2011 年创建以来,Kotlin 不仅通过语言而且通过强大的工具在整个生态系统中不断发展。 现在,它已无缝集成到 Android
2021-07-27 20:40:18 191
转载 Flutter 动态化探索
一、前言Flutter 跨端技术一经推出便在业内赢得了不错的口碑,它在“多端一致”和“渲染性能”上的优势让其他跨端方案很难比拟。虽然 Flutter 的成长曲线和未来前景看起来都很好,但不可否认的是,目前 Flutter 仍处在发展阶段,很多大型互联网企业都无法毫无顾虑地让全线 App 接入,而其中最主要的顾虑是包大小与动态化。动态化代表着更短的需求上线路径,代表着大大压缩了原始包的大小,从而获得更高的用户下载意向,也代表着更健全的线上质量维护体系。当明白这些意义后,我们也就不难理解,在 Flutter
2021-07-04 00:47:48 680
原创 进阶技术 - 如何实现跨进程传递大图?(腾讯面试题)
跨进程传输大图片有哪些常见的方案:1. 文件传输将图片保存在指定路径区域,然后将储存位置信息跨进程发送给其它进程,其它进程通过查找路径读取图片文件。这种方案存在的缺点,在于进程首先需要进行写文件操作,然后再去读取文件,性能低下。2.IPC传输IPC传递图片的方式:Binder,Binder是Android提供的一种类型共享内存的方式,使用方便,性能较高,但传输的数据有大小限制。Socket、管道,Socket和管道传递数据会涉及到至少两次数据拷贝,当数据量大的时候性能低下,除此之外,Sock
2021-06-22 22:34:24 2167
转载 面试---基础性能篇
— 转载自极客时间《Android开发高手课 》,作者张绍文。应用崩溃了,你应该如何去分析?解决崩溃跟破案一样需要经验,我们分析的问题越多越熟练,定位问题就会越快越准。当然这里也有很多套路,比如对于“案发现场”我们应该留意哪些信息?怎样找到更多的“证人”和“线索”?“侦查案件”的一般流程是什么?对不同类型的“案件”分别应该使用什么样的调查方式?崩溃现场崩溃现场是我们的“第一案发现场”,它保留着很多有价值的线索。在这里我们挖掘到的信息越多,下一步分析的方向就越清晰,而不是去靠盲目猜测。操作系统是.
2021-06-08 15:15:42 762
转载 做一名有高度的移动开发工程师
专栏更新至今,不知不觉第二模块“高效开发”也已经更新完了。稳定性、内存、卡顿、I/O、网络,“高质量开发”模块打通了从应用层、Android 系统层、Linux 内核层再到硬件层的优化路径,帮助我们打通“任督二脉”,成为一名 Android 开发高手。所谓“高效开发”,可以给我们带来了什么呢?移动互联网发展到今天,所有人都说“提质增效”,但是团队效能不是靠我们封装一个工具类或者组件,给其他人低成本复用就够了。持续交付平台、测试平台、发布平台、数据平台、网络平台…我希望你可以跳出客户端的限制,去思考整个产品
2021-06-07 14:17:13 204
转载 优秀的架构都是演进而来的
— 转载自极客时间《Android开发高手课 》,作者张绍文。每个程序员心中都有一个成为架构师的梦想,那成为架构师这个目标是否“遥不可及”呢?从我的工作经历来看,我一共负责过搜狗输入法、微信等 4 款亿级产品的架构工作,可能有同学会好奇这些大型的 App 是如何做架构设计的。从我接手的这些应用的现实情况来看,看似光鲜的外表下都有一颗千疮百孔的心:各种日志随便输出、单例满天飞、生命周期混乱、线程乱创建、线程不安全这些问题随处可见。所以你可以看到每个大型应用都背负着沉重的历史技术债务,架构师很重要的一项.
2021-06-06 18:13:16 414
原创 算法面试笔记
剑指 Offer 07. 重建二叉树输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如,给出前序遍历 preorder = [3,9,20,15,7]中序遍历 inorder = [9,3,15,20,7]返回如下的二叉树: 3 / \ 9 20 / \ 15 7解题思路前序 [1] [2,4,7] [3,5,6,8]中序 [4,7,2] [1] [5,3,8,6]前序遍历可以确认
2021-06-06 16:40:53 131
原创 Android 自定义圆角、立体ImageView -- MaterialImageView
Android 自定义圆角、立体ImageView – MaterialImageView public class MaterialImageView extends ImageView { private GradientDrawable mMaskDrawable; private Paint mMaskedPaint; private boolean mCacheV
2019-11-29 11:03:24 604
原创 通过Drawable获取ImageView的Image真实宽高的两种方法
getDrawable().getBounds().height()与getDrawable().getIntrinsicHeight()获得图片宽高 ImageView在不同的分辨率的屏幕中获取的宽高值是不准确的,需要根据density缩放 // 通过getBounds() 获得ImageView中Image的真实宽高,
2019-11-29 11:03:18 1985
原创 属性动画详解之ObjectAnimator、ValueAnimator、PropertyValuesHolder、Keyframe 之间关系
ObjectAnimator ObjectAnimator.ofFloat(example, "rotationX", 0, 360).setDuration(3000).start(); ObjectAnimator.ofFloat(example, "rotationY", 0, 360).setDuration(3000).start();ValueAnimator Valu
2019-11-29 11:03:08 746
原创 爬楼梯算法的五种解决办法-简单演示
下面贴出五种解法: 首先简单递推可知 一级 1 种 二级 2 种 三级 3 种 四级 5 种 五级 8 种 N级 (N-1)的走法数+(N-2)的走法和/** * 递归算法 一行 时间复制度O(2^(N/2))~O(2^N) 空间复杂度O(N) */public int fib02(int n){ return n==1||n==2?n:fi
2019-11-29 11:02:57 938
原创 Android EditText 不显示光标 以及自定义光标
Android EditText 不显示光标解决方案1. EditText使用的是图片背景 如果是EditText使用的是图片背景会遮住光标 通过对EditText设置属性 android:textCursorDrawable=”@null” 一般可以解决这个问题。 ===>这个是安卓属性源码对这条属性的解释 <!-- Reference to
2019-11-29 11:02:49 1972
原创 Android 拍照以及从相册获取图片的两种方式
Android 拍照以及从相册获取图片的两种方式项目开发常用工具类public class ImageUtils { public static final int GET_IMAGE_BY_CAMERA = 5001; public static final int GET_IMAGE_FROM_PHONE = 5002; public static final int C
2019-11-29 11:01:52 616
原创 常见问题总结初稿
常见问题总结在广告机和开发版Android项目开发过程中的个人经验总结,分为以下几个栏目(需要结合工作以来的问题解决案例):广告机屏幕适配图片展示模糊、图片占用内存过高问题动画抖动问题白屏问题优化常见OOM解决方案ANR问题解决方案大量图片帧动画实现动画流畅度经验总结APP开机启动方案Crash 日志收集、重启Rxjava背压使用软键盘遮挡的问题架构技术栈制作内...
2018-08-06 18:40:52 802
原创 LeetCode Maximum Depth of Binary Tree 解法
https://leetcode.com/problems/maximum-depth-of-binary-tree/description/原题链接原文: Given a binary tree, find its maximum depth. The maximum depth is the number of nodes along the longest path
2018-01-24 21:47:23 258
原创 LeetCode Search in Rotated Sorted Array 解法
https://leetcode.com/problems/search-in-rotated-sorted-array/description/原题链接 Suppose an array sorted in ascending order is rotated at some pivot unknown to you beforehand. (i.e., 0 1 2 4
2018-01-23 20:10:27 273
原创 LeetCode Subsets 解法
https://leetcode.com/problems/subsets/description/原题链接给定一个含不同整数的集合,返回其所有的子集 注意 子集中的元素排列必须是非降序的,解集必须不包含重复的子集如果 S = [1,2,3],有如下的解:[ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2],
2018-01-22 21:48:34 336
原创 微信支付DEMO完整版
看到很多小伙伴在找微信支付Demo,我在这里发一下,这个Demo可以直接运行并能在线支付1分钱。因为是Demo,多次调用支付可能会失败。 微信支付DEMO完整版微信开放平台
2016-01-19 10:01:06 1896
Git版本控制管理 高清完整PDF版
2018-11-26
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人