![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
移动开发
文章平均质量分 82
码农 小生
分享一些自己的Android开发的经验
展开
-
Android谈起泛型,大家都很佛性
说起泛型,不用想,肯定都是用的佛性,可用可不用四舍五入下就是不用。可现实是,你不用,我不用,可总有“别人家的孩子”在用,你说气不气。为何有了接口,我们还需要使用泛型呢?因为即便使用了接口,对于程序的约束还是太强。因为一旦指明了接口,就会要求我们的代码使用特定的接口,而我们的目的是希望编写出更通用的代码,是要使代码能够应用于某种不确定的类型,而不是一个具体的接口或类。这是《Java编程思想》说的,可不是我吹的,香不香看了才知道。本文主要涉及下面几个方面的介绍:泛型类泛型的目的是用来指定要持有什么类原创 2021-06-17 19:54:15 · 347 阅读 · 6 评论 -
带着问题学,协程到底是什么?
前言随着kotlin在Android开发领域越来越火,协程在各个项目中的应用也逐渐变得广泛但是协程到底是什么呢?协程其实是个古老的概念,已经非常成熟了,但大家对它的概念一直存在各种疑问,众说纷纷有人说协程是轻量级的线程,也有人说kotlin协程其实本质是一套线程切换方案显然这对初学者不太友好,当不清楚一个东西是什么的时候,就很难进入为什么和怎么办的阶段了本文主要就是回答这个问题,主要包括以下内容1.关于协程的一些前置知识2.协程到底是什么?3.kotlin协程的一些基本概念,挂起函数,C.原创 2021-06-15 21:13:52 · 24321 阅读 · 23 评论 -
鸿蒙应用开发Ability和Android的activity不同之处
Ability概述Ability是应用所具备能力的抽象,也是应用程序的重要组成部分。一个应用可以具备多种能力(即可以包含多个Ability),HarmonyOS支持应用以Ability为单位进行部署。Ability可以分为FA(Feature Ability)和PA(Particle Ability)两种类型,每种类型为开发者提供了不同的模板,以便实现不同的业务功能。FA支持Page Ability:Page模板是FA唯一支持的模板,用于提供与用户交互的能力。一个Page实例可以包含一组相关页面,转载 2021-06-08 15:08:49 · 670 阅读 · 2 评论 -
见识不一样的Flutter 之原生混合开发
开始之前,我们需要了解一下 flutter 的四种项目结构application:纯 flutter 应用plugin:基于原生的 flutter 插件package:纯 dart 插件module:原生上集成 flutter 模块一、将 flutter 集成到 Android 项目在原生应用的目录下运行命令:flutter create -t module --org com.example flutter_lib会在目录下面生成如下文件: 我们需要将生成 flutter mo.原创 2021-06-07 20:48:46 · 462 阅读 · 6 评论 -
鸿蒙操作系统的前世今生
6月2号,在万众期待中 ,华为的鸿蒙操作系统及全场景新品发布会如期召开,我们在见证了第一个国产操作系统HarmonyOS 2.0正式面向市场的同时,也见证了第一个国产开源操作系统OpenHarmony 2.0的正式发布!相信很多人在自豪的同时会感到疑惑,今天发布的鸿蒙操作系统较以往有何不同?HarmonyOS和OpenHarmony到底是什么关系?今天我将为大家一一解惑!图1 HarmonyOS 2.0和OpenHarmony 2.0的发布鸿蒙操作系统发展沿革鸿蒙这个名字意为“万物起源”,同时.原创 2021-06-07 15:57:35 · 3035 阅读 · 3 评论 -
Kotlin 中使用 Hilt 的开发实践
Hilt 是基于 Dagger 开发的全新的依赖项注入代码库,它简化了 Android 应用中 Dagger 的调用方式。本文通过简短的代码片段为您展示其核心功能以帮助开发者们快速入门 Hilt。配置 Hilt如需在应用中配置 Hilt,请先参考 Gradle Build Setup。完成安装全部的依赖和插件以后,仅需在您的 Application 类之前添加 @HiltAndroidApp 注解即可开始使用 Hilt,而无需其它操作。@HiltAndroi.原创 2021-06-05 19:59:32 · 625 阅读 · 0 评论 -
200 字讲明白 鸿蒙是什么、鸿蒙不是什么
老婆:“晚上 8 点鸿蒙就要正式发布了,我的 P40 Pro 可以升级鸿蒙操作系统了。”我:“恭喜啊,我还在等 P50 或者苹果的 iPhone13。”老婆:“你说,鸿蒙的事都快吵两年了,你学计算机的,你来讲两句,鸿蒙到底是什么,它是不是所谓的安卓?”我:“这个问题问的好,一般看到有人在争论鸿蒙是不是安卓的时候,我都不想看,直接离开,因为我觉得这种争论毫无意义。”老婆:“怎么说?”我:“事实上,要搞清楚一件事情的本质其实很简单,就是在一个系统中,不断筛选和剔除系统的成分,当去除某个成分后,这个系.原创 2021-06-03 16:09:12 · 616 阅读 · 5 评论 -
某大厂程序员爆料:和一个俄罗斯大美女相亲,不要彩礼,自带嫁妆,只是担心俄罗斯女人老得太快!
一个百度程序员发帖自爆了一个特殊的异国相亲故事:五一相亲了一个俄罗斯妹子,妹子比楼主小八岁,会三国语言,在广州一所二本学校做双语教师。妹子极为漂亮,身高178,皮肤特别好,白皙,素颜纯天然。更重要的是妹子想留在中国,没有彩礼,家里还能给她一笔钱,两人可以一起付七成首付,还贷忽略不计。楼主目前很满意,只是担心俄罗斯民族老得快,胖得也快,十年后怎么办?俄罗斯妹子的颜值世界闻名,网友纷纷大呼“羡慕”,楼主厉害,战斗民族都能拿下!楼主赶紧给大家分享分享怎么才能和俄罗斯妹子相亲,用的什么平台,别藏着掖着了。原创 2021-06-02 16:15:10 · 411 阅读 · 2 评论 -
女友加班发自拍,男友用几行代码发现惊天秘密...
前面520是一年几度的重要日子,青男俊女们全城出动,鲜花遍地,朋友圈也开启了晒礼物大赛。在这个重要的日子里,大多数文章会教你如何送礼物,如何约会,如何虐狗。我却不一样,我今天要教你如何识别海王,如何摘绿帽!真实案例一哥们在这天早早收班,下班就准点溜了,准备回家跟女友一起浪漫地渡过这个重要的夜晚。可谁料女朋友跟他说今晚要加班,可能会比较晚回家。哥们情绪有点低落,准备回家打几把王者。在回家的路上,他收到女朋友发来的一张自拍照,并且嘱咐他要乖乖的在家等她回去。这张照片(非原照片,看官们别想入非非!).原创 2021-06-02 13:39:55 · 332 阅读 · 4 评论 -
分享Java进阶-反射机制的详细学习
什么是反射JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法;这种动态获取的以及动态调用对象的方法的功能称为Java的反射机制。java反射机制提供的功能:在运行时判定任意一个对象所属的类在运行时构造任意一个类的对象在运行时判定任意一个类所具有的成员变量和方法在运行时调用任意一个对象的方法反射应用场景操作因访问权限限制的属性和方法 如private属性和方法,又如在android开发中.转载 2021-05-31 21:43:01 · 99 阅读 · 1 评论 -
到了40的程序员,都何去何从
什么是反射JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法;这种动态获取的以及动态调用对象的方法的功能称为Java的反射机制。java反射机制提供的功能:在运行时判定任意一个对象所属的类在运行时构造任意一个类的对象在运行时判定任意一个类所具有的成员变量和方法在运行时调用任意一个对象的方法反射应用场景操作因访问权限限制的属性和方法 如private属性和方法,又如在android开发中.原创 2021-05-31 13:42:56 · 1483 阅读 · 8 评论 -
Flutter 入门与实战:仿一个微信价值几个亿的页面
网传微信支付页面的第三方链接一个格子需要广告费1一个亿,微信支付页非常适合做功能导航,本篇使用 ListView和 GridView 模仿了微信支付的页面,同时介绍了如何装饰一个组件的背景和边缘样式。左侧是微信支付的界面, 右侧是开发完成后的效果,图标是从 iconfont 上下载的。首先介绍一下本篇涉及到的组件。带装饰效果的 Container实际过程中我们经常会遇到一个容器需要额外的样式,例如圆角,背景色等。在 Flutter 中,对于各种容器都有一个 decoration 的属性,可以用..原创 2021-05-30 21:22:53 · 273 阅读 · 1 评论 -
分享Android KTX + Kotlin协程 组合使用
在android中请求权限,一般使用requestPermissions和onRequestPermissionsResult组合使用来完成。但是这种方式有个很大的弊端,会让代码分割导致代码可读性变差。经测试改方式ktx调用registerForActivityResult只能在activity或者fragment,初始化时调用,不能用在点击的时候触发使用添加依赖 implementation "androidx.activity:activity-ktx:1.2.3" implementation原创 2021-05-28 15:19:28 · 880 阅读 · 11 评论 -
再见!杭州!再见!阿里巴巴
最近和在北京的朋友老冯聊天,老冯说他要离开阿里了,我和老冯是在14年北京租房时认识的,当时老冯招租室友,我加了微信,约看房,后来才知道他也是个程序员,但是因为我那时没啥钱,最后和我另外一些做开发朋友一起合租了。虽然没有一起合租,但是都是程序员,都是一个方向的开发,也经常和老冯一起玩。关于老冯的详细介绍,可以看去年写的这篇文章《在阿里工作几年,女友跑路,晋升无望,买不起房,我活成了一个笑话~》当时我建议老冯跳槽,但是老冯觉得再自己最落魄的时候去市场跳,没有优势,所以想再争取升了P7,然后再...原创 2021-05-27 16:34:57 · 1093 阅读 · 8 评论 -
Android开发之MVVM模式实践:协程与网络请求的结合
前言大家好,我是小益!在经过前两章对协程的介绍后,我们终于又回到了MVVM的封装。协程在Android开发中最常用的场景应该是网络请求了,其次是一些使用Thread的场景,本章内容我们将着重介绍如何将协程与网络请求结合。一、viewModelScope的使用自行创建协程var uiScope = CoroutineScope(SupervisorJob() + Dispatchers.Main)在上述代码中我们创建了一个协程并指定了这个协程是在主线程中工作,之后我们就可以使用前...原创 2021-05-27 15:41:01 · 738 阅读 · 2 评论 -
Kotlin 内联类 inline class请了解一下
最近在做开发的工作中,意外发现了kotlin官方承认的一个内联类的bug。在理解这个bug产生的原因的过程中,我秉承着打破砂锅问到底的决心,竟然顺势学习了一波jvm字节码。收获颇丰,于是便开始着手写下这篇文章和大家分享一下这个学习的过程。这篇文章很长,但是耐心看完,我相信大家肯定会觉得很值。听说inline class很屌事情是这样的。团队的领头大哥上周给我安利了一波kotlin的内联类,说这玩意好用的很,节约内存。于是顺手写了一个sample给我看看。还没了解过内联类(inline class)的原创 2021-05-26 22:05:37 · 244 阅读 · 0 评论 -
Google I/O 公布了 Compose 1.0,你准备好了吗?
Compose 于2019年的 Google IO大会首次发布,当时感觉前景并不乐观,想推翻已存在10年之久的现有视图体系谈何容易,更何况将来与 Flutter 等同门兄弟的关系又该如何相处?没想到时隔仅两年,本届 IO 大会上就宣布 Compose 1.0 即将到来。其实从年初 Beta 版的一系列造势活动就能看出 Google 在 Compose 推广上的决心之大,只要官方发力编程语言都可以短期内切换,更何况一个UI框架? 所以不必怀疑, Compose 必将成为新的UI开发标准。随着稳定版的到原创 2021-05-25 22:28:07 · 545 阅读 · 0 评论 -
UI组件化--干掉shape终极一战
背景UI组件化对项目有正向收益,不仅能提效,还能保证高度的视觉还原度,减少和UI设计师沟通成本,所以也得到了大家的认可。所以每个项目都会启动UI组件化建设,但是UI视图是和项目强相关的,项目间无法复用,导致大家疲于实现,重复造轮子,拖延下班时间,那么基于上面的背景,有没有更好的解决方案呢,答案是有的,下面介绍一下UI组件化在项目中的实施经验,下面分为目标、工程架构、组件架构、组件实现来展开。目标对现有UI组件化进行容器化抽象,底层UI组件提供最大功能集合,完全解耦业务逻辑,业务方根据自己需求原创 2021-05-25 14:48:22 · 239 阅读 · 0 评论 -
Android 兼容 Java 8 语法特性的原理分析
本文主要阐述了Lambda表达式及其底层实现(invokedynamic指令)的原理、Android第三方插件RetroLambda对其的支持过程、Android官方最新的dex编译器D8对其的编译支持。通过对这三个方面的跟踪分析,以Java 8的代表性特性——Lambda表达式为着眼点,将Android如何兼容Java8的过程分享给大家。Java 8概述Java 8是Java开发语言非常重要的一个版本。Oracle从2014年3月18日发布Java 8,从该版本起,Java开始支持..原创 2021-05-24 21:22:54 · 230 阅读 · 0 评论 -
你听说过关于互联网圈子的四大谎言吗?
你听说过关于互联网圈子的四大谎言吗? 近日,有网友发帖爆出这所谓的“四大谎言”,分别是:去阿里镀金,去字节赚钱,去金山养老,去腾讯学技术。这本是四句传言,大概其本意是:去老牌大厂阿里工作相当于给自己的简历镀一层金,去业务蒸蒸日上的新兴大厂字节工作收入更高,去节奏慢、相对稳定的金山工作相当于养老,去腾讯工作可以学到更先进更牛的技术。听起来挺有道理,怎么就成了谎言呢?来听听程序员们怎么说吧!先来看第一句,“去阿里镀金”,阿里员工表示这句不算谎言,确实能镀金。问题...原创 2021-05-24 16:52:07 · 543 阅读 · 0 评论 -
从大公司年薪30万,跳槽到小公司月薪8千,是什么体验?
基本每隔一段时间,我都会收到一类问题:去大公司好,还是去小公司好?我之前文章中聊过一位朋友,35岁时,从大公司年薪30万的技术总监,跳槽到同学的创业小公司,拿着8千块月薪,主要收入是业绩奖金和年底分红。原先他管理的团队负责几个老系统的维护,几年了都差不多,直到业务量缩水时才下定决心跳出圈子。有读者评论说:早跳到小公司不就好了?大公司到最后都是养老,价值越做越低。近几年市面上有一种观点很流行,大概是:大公司会毁掉你。然后列举种种弊病,包括晋升通道僵化且狭窄、“螺丝钉化”、层级过多、人浮原创 2021-05-24 14:16:57 · 160 阅读 · 0 评论 -
使用 Kotlin 提高生产力
Android 最新动态20Kotlin 以其简洁的特性而闻名,而在我们的实践中,更加简洁就意味着更加高效。事实上,在使用 Kotlin 的专业 Android 开发者中,有多达 67% 的人表示 Kotlin 已经帮助他们提升了生产力。在接下来的内容中,我会分享一些 Kotlin 帮助我们的合作伙伴工程师们提高生产力的方式,并为您介绍有助于此的 Kotlin 功能。在使用 Kotlin 的专业 Android 开发者中,有多达 67% 的人表示 Kotlin 已经帮助他们提升了生产力图..原创 2021-05-23 21:24:45 · 74 阅读 · 0 评论 -
FFmpeg代码架构
FFmpeg模块分类打开FFmpeg源码,会发现有一系列libavxxx的模块,这些模块很好地划分了代码的结构和分工。libavformat,format,格式封装libavcodec,codec,编码、解码libavutil,util,通用音视频工具,像素、IO、时间等工具libavfilter,filter,过滤器,可以用作音视频特效处理libavdevice,device,设备(摄像头、拾音器)libswscale,scale,视频图像缩放,像素格式互换libavresample原创 2021-05-23 20:53:46 · 165 阅读 · 0 评论 -
音视频交叉编译动态库、静态库的学习
#前言该篇文章主要介绍 Android 端利用 NDK 工具库来对 C/C++ 进行交叉编译,并通过 makefile 和 cmake 来构建 Android 项目。#编译器了解 c/c++ 编译器的基本使用,能够在后续移植第三方框架进行交叉编译时,清楚的了解应该传递什么参数。1. clangclang 是一个C、C++、Object-C的轻量级编译器。基于LLVM( LLVM是以C++编写而成的构架编译器的框架系统,可以说是一个用于开发编译器相关的库),对比 gcc,它具有编译速度更快、编译产原创 2021-05-21 21:48:46 · 369 阅读 · 1 评论 -
Android开发中单例模式四种实现方式详解
为何用单例模式以及应用场景整个程序的运行中只允许有一个类的实例;需要频繁实例化然后销毁的对象。创建对象时耗时过多或者耗资源过多,但又经常用到的对象。方便资源相互通信的环境,封装一些常用的工具类,保证整个应用常用的数据统一保存一些共享数据在内存中,其他类随时可以读取。资源共享的情况下,避免由于资源操作时导致的性能或损耗等。如上述中的日志文件,应用配置控制资源的情况下,方便资源之间的互相通信。如线程池等。为什么用单例大家都清楚了 废话不说,直接上代码,盘它就完了!!!!一.饿汉式p.原创 2021-05-21 20:11:58 · 213 阅读 · 0 评论