
android 开发
文章平均质量分 82
普通网友
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
kotlin 协变、逆变 - 猫和鱼的故事
网上找的一段协变、逆变比较正式的定义:逆变与协变用来描述类型转换后的继承关系,其定义:如果 A、B 表示类型,f(⋅) 表示类型转换,≦ 表示继承关系(比如,A≦B 表示 A 是由 B 派生出来的子类): 当 A ≦ B 时,如果有 f(A) ≦ f(B) ,那么 f 是协变的; 当 A ≦ B 时,如果有 f(B) ≦ f(A) ,那么 f 是逆变的; 如果上面两种关系都不成立,即 (A) 与 f(B) 相互之间没有继承关系,则叫做不变的。java 中可以通过如下泛型通配符以支持协变和逆变:.原创 2021-06-23 16:09:36 · 359 阅读 · 0 评论 -
深入浅出协程、线程和并发问题
"协程是轻量级的线程",相信大家不止一次听到这种说法。但是您真的理解其中的含义吗?恐怕答案是否定的。接下来的内容会告诉大家协程是如何在 Android 运行时中被运行的,它们和线程之间的关系是什么,以及在使用 Java 编程语言线程模型时所遇到的并发问题。协程和线程协程旨在简化异步执行的代码。对于 Android 运行时的协程,lambda 表达式的代码块会在专门的线程中执行。例如,示例中的 斐波那契 运算:// 在后台线程中运算第十级斐波那契数 someScope.launch(Dispatc原创 2021-06-18 16:07:37 · 212 阅读 · 2 评论 -
探索Flutter & 腾讯移动通讯 TPNS
Flutter TPNS1. 基本接入1.1 环境配置小编在接入 Flutter TPNS 时,需要在 Flutter 和 Android 两端进行插件的安装配置;Flutter在工程 pubspec.yaml 中 dependencies 下引入 tpns_flutter_plugin 插件;dependencies: flutter: sdk: flutter tpns_flutter_plugin: git: url: https://gith.原创 2021-06-11 14:07:18 · 2115 阅读 · 10 评论 -
程序员中年危机,如何安全度过?
###写在前面的话负责的团队去年发展不错,需要扩大规模,有2个招聘名额,一个高级,另一个是中级,都是Java技术体系。最近虽然在家办公,但依然按照计划在推进招聘的计划,我要做的事情,就是挖掘认才,进行技术面试,把第一道关。然而,在招聘过程中,遇到一些人,也听说一些事情,对“程序员的中间危机”有了不一样的感触,于是决定还是写下来,分享给大家。##中年危机的由来其实,中间危机,并不是程序员的专属,因为人到中年,上有老下有小,并且已经过了年轻力壮的青年时代,无论怎么说,怎么比,中年都是鸭梨最大的一个人生.原创 2021-06-08 17:38:36 · 342 阅读 · 4 评论 -
揭秘Android常用三方框架源码-okhttp
okhttp是一个处理网络请求的开源项目,是安卓端最火热的轻量级框架,由移动支付Square公司贡献(该公司还贡献了Picasso) 用于替代HttpUrlConnection和Apache HttpClient。作为常用框架,无论是从使用还是面试方面,我们都有必要了解其源码实现,不能仅停留在api的调用层面。在讲解其源码之前,先来简单回顾一下okhttp的使用。一、基本使用1.1 导入通过gradle引入依赖implementation 'com.squareup.okhttp3:okhttp.原创 2021-06-03 21:01:30 · 243 阅读 · 2 评论 -
什么?有人整理了Kotlin 集合函数锦集!!
自从Kotlin官宣为Android开发首选语言后,大家也都正计划很快转向Kotlin或者已经完全转向Kotlin,接下来我们直奔主题了。我们在Android应用程序中研发过程中,对于 lists, maps, sets等集合的处理会耗费很多精力,其实有很多Kotlin集合函数,可以让我们事半功倍。接下来,我们将了解许多Kotlin集合函数。你可以作为Kotlin集合函数的备忘录收藏起来。过滤数组重复的字符串有很多方法可以从数组中删除重复的字符串://过滤数组重复的字符串fun removeDu转载 2021-06-02 21:51:06 · 632 阅读 · 1 评论 -
Android 性能优化总结
Android 性能优化总结性能的优化是一个老生常谈的点,也是一个比较重要的点。做过一点性能优化的工作,现在对工作中的优化点做一个总结。如有错误,还请指正。有哪些方面需要优化在平时的优化过程中我们需要从哪几个点来优化呢?其实我们平时自己一定也用过软件,在使用软件的过程中有没有什么想吐槽的呢?“这个 app 怎么还没下载完!”、“太卡了吧!”、“图片怎么还没加载出来!”、“怎么刚进去就卡了!”、“这么点了一下就退出了!”等等,是不是有这样的想法?这些想法其实包含了我们今天要说的内容,就是从哪些方面来优原创 2021-06-02 15:23:20 · 225 阅读 · 2 评论 -
女友加班发自拍,男友用几行代码发现惊天秘密...
前面520是一年几度的重要日子,青男俊女们全城出动,鲜花遍地,朋友圈也开启了晒礼物大赛。在这个重要的日子里,大多数文章会教你如何送礼物,如何约会,如何虐狗。我却不一样,我今天要教你如何识别海王,如何摘绿帽!真实案例一哥们在这天早早收班,下班就准点溜了,准备回家跟女友一起浪漫地渡过这个重要的夜晚。可谁料女朋友跟他说今晚要加班,可能会比较晚回家。哥们情绪有点低落,准备回家打几把王者。在回家的路上,他收到女朋友发来的一张自拍照,并且嘱咐他要乖乖的在家等她回去。这张照片(非原照片,看官们别想入非非!).原创 2021-06-02 13:39:55 · 459 阅读 · 4 评论 -
分享Java进阶-反射机制的详细学习
什么是反射JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法;这种动态获取的以及动态调用对象的方法的功能称为Java的反射机制。java反射机制提供的功能:在运行时判定任意一个对象所属的类在运行时构造任意一个类的对象在运行时判定任意一个类所具有的成员变量和方法在运行时调用任意一个对象的方法反射应用场景操作因访问权限限制的属性和方法 如private属性和方法,又如在android开发中.转载 2021-05-31 21:43:01 · 153 阅读 · 1 评论 -
到了40的程序员,都何去何从
什么是反射JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法;这种动态获取的以及动态调用对象的方法的功能称为Java的反射机制。java反射机制提供的功能:在运行时判定任意一个对象所属的类在运行时构造任意一个类的对象在运行时判定任意一个类所具有的成员变量和方法在运行时调用任意一个对象的方法反射应用场景操作因访问权限限制的属性和方法 如private属性和方法,又如在android开发中.原创 2021-05-31 13:42:56 · 1605 阅读 · 8 评论 -
Flutter 入门与实战:仿一个微信价值几个亿的页面
网传微信支付页面的第三方链接一个格子需要广告费1一个亿,微信支付页非常适合做功能导航,本篇使用 ListView和 GridView 模仿了微信支付的页面,同时介绍了如何装饰一个组件的背景和边缘样式。左侧是微信支付的界面, 右侧是开发完成后的效果,图标是从 iconfont 上下载的。首先介绍一下本篇涉及到的组件。带装饰效果的 Container实际过程中我们经常会遇到一个容器需要额外的样式,例如圆角,背景色等。在 Flutter 中,对于各种容器都有一个 decoration 的属性,可以用..原创 2021-05-30 21:22:53 · 368 阅读 · 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 · 1213 阅读 · 11 评论 -
再见!杭州!再见!阿里巴巴
最近和在北京的朋友老冯聊天,老冯说他要离开阿里了,我和老冯是在14年北京租房时认识的,当时老冯招租室友,我加了微信,约看房,后来才知道他也是个程序员,但是因为我那时没啥钱,最后和我另外一些做开发朋友一起合租了。虽然没有一起合租,但是都是程序员,都是一个方向的开发,也经常和老冯一起玩。关于老冯的详细介绍,可以看去年写的这篇文章《在阿里工作几年,女友跑路,晋升无望,买不起房,我活成了一个笑话~》当时我建议老冯跳槽,但是老冯觉得再自己最落魄的时候去市场跳,没有优势,所以想再争取升了P7,然后再...原创 2021-05-27 16:34:57 · 1147 阅读 · 8 评论 -
Android开发之MVVM模式实践:协程与网络请求的结合
前言大家好,我是小益!在经过前两章对协程的介绍后,我们终于又回到了MVVM的封装。协程在Android开发中最常用的场景应该是网络请求了,其次是一些使用Thread的场景,本章内容我们将着重介绍如何将协程与网络请求结合。一、viewModelScope的使用自行创建协程var uiScope = CoroutineScope(SupervisorJob() + Dispatchers.Main)在上述代码中我们创建了一个协程并指定了这个协程是在主线程中工作,之后我们就可以使用前...原创 2021-05-27 15:41:01 · 909 阅读 · 2 评论 -
Kotlin 内联类 inline class请了解一下
最近在做开发的工作中,意外发现了kotlin官方承认的一个内联类的bug。在理解这个bug产生的原因的过程中,我秉承着打破砂锅问到底的决心,竟然顺势学习了一波jvm字节码。收获颇丰,于是便开始着手写下这篇文章和大家分享一下这个学习的过程。这篇文章很长,但是耐心看完,我相信大家肯定会觉得很值。听说inline class很屌事情是这样的。团队的领头大哥上周给我安利了一波kotlin的内联类,说这玩意好用的很,节约内存。于是顺手写了一个sample给我看看。还没了解过内联类(inline class)的原创 2021-05-26 22:05:37 · 318 阅读 · 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 · 655 阅读 · 0 评论 -
UI组件化--干掉shape终极一战
背景UI组件化对项目有正向收益,不仅能提效,还能保证高度的视觉还原度,减少和UI设计师沟通成本,所以也得到了大家的认可。所以每个项目都会启动UI组件化建设,但是UI视图是和项目强相关的,项目间无法复用,导致大家疲于实现,重复造轮子,拖延下班时间,那么基于上面的背景,有没有更好的解决方案呢,答案是有的,下面介绍一下UI组件化在项目中的实施经验,下面分为目标、工程架构、组件架构、组件实现来展开。目标对现有UI组件化进行容器化抽象,底层UI组件提供最大功能集合,完全解耦业务逻辑,业务方根据自己需求原创 2021-05-25 14:48:22 · 301 阅读 · 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 · 308 阅读 · 0 评论 -
你听说过关于互联网圈子的四大谎言吗?
你听说过关于互联网圈子的四大谎言吗? 近日,有网友发帖爆出这所谓的“四大谎言”,分别是:去阿里镀金,去字节赚钱,去金山养老,去腾讯学技术。这本是四句传言,大概其本意是:去老牌大厂阿里工作相当于给自己的简历镀一层金,去业务蒸蒸日上的新兴大厂字节工作收入更高,去节奏慢、相对稳定的金山工作相当于养老,去腾讯工作可以学到更先进更牛的技术。听起来挺有道理,怎么就成了谎言呢?来听听程序员们怎么说吧!先来看第一句,“去阿里镀金”,阿里员工表示这句不算谎言,确实能镀金。问题...原创 2021-05-24 16:52:07 · 631 阅读 · 0 评论 -
从大公司年薪30万,跳槽到小公司月薪8千,是什么体验?
基本每隔一段时间,我都会收到一类问题:去大公司好,还是去小公司好?我之前文章中聊过一位朋友,35岁时,从大公司年薪30万的技术总监,跳槽到同学的创业小公司,拿着8千块月薪,主要收入是业绩奖金和年底分红。原先他管理的团队负责几个老系统的维护,几年了都差不多,直到业务量缩水时才下定决心跳出圈子。有读者评论说:早跳到小公司不就好了?大公司到最后都是养老,价值越做越低。近几年市面上有一种观点很流行,大概是:大公司会毁掉你。然后列举种种弊病,包括晋升通道僵化且狭窄、“螺丝钉化”、层级过多、人浮原创 2021-05-24 14:16:57 · 234 阅读 · 0 评论 -
使用 Kotlin 提高生产力
Android 最新动态20Kotlin 以其简洁的特性而闻名,而在我们的实践中,更加简洁就意味着更加高效。事实上,在使用 Kotlin 的专业 Android 开发者中,有多达 67% 的人表示 Kotlin 已经帮助他们提升了生产力。在接下来的内容中,我会分享一些 Kotlin 帮助我们的合作伙伴工程师们提高生产力的方式,并为您介绍有助于此的 Kotlin 功能。在使用 Kotlin 的专业 Android 开发者中,有多达 67% 的人表示 Kotlin 已经帮助他们提升了生产力图..原创 2021-05-23 21:24:45 · 110 阅读 · 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 · 225 阅读 · 0 评论 -
Android 目前最稳定和高效的UI适配方案
Android系统发布十多年以来,关于Android的UI的适配一直是开发环节中最重要的问题,但是我看到还是有很多小伙伴对Android适配方案不了解。刚好,近期准备对糗事百科Android客户端设计一套UI尺寸适配方案,可以和小伙伴们详细的聊一聊这个问题。Android适配最核心的问题有两个,其一,就是适配的效率,即把设计图转化为App界面的过程是否高效,其二如何保证实现UI界面在不同尺寸和分辨率的手机中UI的一致性。这两个问题都很重要,一个是保证我们开发的高效,一个是保证我们适配的成效;今天我们就这两原创 2021-05-22 20:20:06 · 240 阅读 · 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 · 446 阅读 · 1 评论 -
Android开发中单例模式四种实现方式详解
为何用单例模式以及应用场景整个程序的运行中只允许有一个类的实例;需要频繁实例化然后销毁的对象。创建对象时耗时过多或者耗资源过多,但又经常用到的对象。方便资源相互通信的环境,封装一些常用的工具类,保证整个应用常用的数据统一保存一些共享数据在内存中,其他类随时可以读取。资源共享的情况下,避免由于资源操作时导致的性能或损耗等。如上述中的日志文件,应用配置控制资源的情况下,方便资源之间的互相通信。如线程池等。为什么用单例大家都清楚了 废话不说,直接上代码,盘它就完了!!!!一.饿汉式p.原创 2021-05-21 20:11:58 · 294 阅读 · 0 评论