Android 工程师
文章平均质量分 90
普通网友
这个作者很懒,什么都没留下…
展开
-
硬核分享:优化 “Android Studio” 编译速度的10个小技巧
Google现在最推荐的IDE是Android Studio; 用起来很智能,但是也有占用很多内存,运行起来很卡的缺点,下面,我们就来谈谈Android Studio的优化吧或者: 使用墙外代理使用offline work和Local gradle在setting->Build,Execution,Deployment->gradle路径下,选择Use local Gradle distribution,把gradle下载到本地,这样本项目和其他项目用到的时候就不需要重新下载了; 项目编译运行成功后原创 2022-06-15 16:26:52 · 2538 阅读 · 0 评论 -
字节跳动、小米、美团、腾讯、360、华为、京东面试真题解析
在过去不久四五月面试黄金期,有些小伙伴已经找到了理想的工作,当然也有很多小伙伴因为准备不充分,面试挂了,临近毕业季,最近有很多网友都在求大厂面试题;正好我在4月份和5月份整理和收集了 Android 基础高级面试真题解析,于是就发上来分享给大家view的绘制流程简单介绍下measureSpace测量模式mode共分为三种getwidth和getMeasureWidth的区别invalidate和postinvalidate的区别requestlayout的作用ondraw和dispatchdraw的区别自定原创 2022-06-14 20:03:36 · 511 阅读 · 0 评论 -
一篇读懂 Android 开发中模块化、组件化、插件化和热修复
模块:最初的目的是将同一类型的代码整合在一起; 所以模块的功能相对复杂,但都同属于一个业务;不同模块之间也会存在依赖关系; 但大部分都是业务性的互相跳转,从地位上来说它们都是平级的特点:分属同一功能/业务的代码进行隔离(分装)成独立的模块,可以独立运行; 以页面、功能或其他不同粒度划分程度不同的模块,位于业务框架层,模块间通过接口调用,目的是降低模块间的耦合,由之前的主应用与模块耦合,变为主应用与接口耦合,接口与模块耦合;模块就像有多个USB插口的充电宝,可以和多部手机充电,接口可以随意插拔,复用性很强,可原创 2022-06-14 15:50:14 · 1877 阅读 · 0 评论 -
安卓开发中的 “Android高手” ,需要具备哪些技术?
**成为一名安卓开发者很容易,但是要成为一名 “Android 高手”却不那么容易;**这需要付出很多的努力,耐心,奉献和毅力才能做到作为好的安卓开发,首先明确Android是前端,重点是UI,做出稳定的应用是关键1、做出稳定的应用是关键。作为好的安卓开发,首先明确Android是前端,重点是UI,掌握自定义view2、建立知识体系很多人对Android属于一知半解的状态,鼓励去Stackoverflow之类的地方寻找问题的解决办法,但务必了解内在的机理,达成对知识理解的体系,当你建立了一个体系,很多问题就原创 2022-06-13 20:05:06 · 1591 阅读 · 0 评论 -
详谈 Android 开发中常见的内存泄露问题以及其优化方案
如果一个无用对象(不需要再使用的对象)仍然被其他对象持有引用,造成该对象无法被系统回收,以致该对象在堆中所占用的内存单元无法被释放而造成内存空间浪费;这种情况就是内存泄露在 Android 开发中,一些不好的编程习惯会导致我们的开发的 app 存在内存泄露的情况;下面介绍一些在 Android 开发中常见的内存泄露场景及优化方案单例模式在 Android 开发中会经常用到,但是如果使用不当就会导致内存泄露; 因为单例的 静态 特性使得它的 生命周期 同应用的生命周期一样长,如果一个对象已经没有用处了;但是单原创 2022-06-13 15:57:20 · 630 阅读 · 0 评论 -
知己知彼,百战不殆——Android 性能优化的那些事
随着业务复杂度的逐渐增加,代码、资源也在不断的增加,此时你的APP大小也在增加; 从用户层面来说,面对动辄几十兆的APP来说在非WIFI情况下还是会犹豫要不要下载,不下载你就可能因此失去了一个用户;从公司层面来讲,流量就是钱,减少APP的大小就显得尤为重要;从开发者层面上来讲,你掌握了这个手艺也会略显逼格满满废话不多说了,开始正题知己知彼,方能百战不殆; 了解应用程序APK的结构对于我们来说很有帮助,APK文件由一个ZIP存档组成,其中包含组成应用程序的所有文件;这些文件包括Java类文件,资源文件和包含编原创 2022-06-12 21:06:43 · 112 阅读 · 0 评论 -
Android composse 声明式UI,更简单的自定义
声明式UI,更简单的自定义; 实时带交互的预览功能 Compose 并不是类似于Recyclerview的高级控件,而是直接抛弃了View,ViewGroup那套东西,从上到下鲁了一套全新的框架,直白点说就是它的渲染机制,布局机制,触摸算法,以及UI 具体写法全都是新的Compose 实现了声明式UI,替代传统的命令是UI; 可能对于我们来说第一个问题就是什么是声明式?什么是命令式UI? 首先看一下声明式UI长什么样Compose是用kotlin来写的,它的每一个控件都是一个函数调用; Text() T原创 2022-06-10 15:08:32 · 1477 阅读 · 0 评论 -
深入剖析AndroidStudio如何提高编译速度的几种方法
作为一名 Android 程序员,选择一个好的 IDE 工具可以使开发变得非常高效,很多程序员喜欢使用 Google 的 Android Studio来进行开发,但使用起来有时会出现卡顿等问题;本文介绍了几种优化 Android Studio 启动、编译、运行速度的方法开启 gradle 单独的守护进程当 Android Studio 遇到错误的时候,往往会导致 Android Studio 挂掉,为了防止退出程序,则另外开启一个线程来守护 Android Studio 的进程,具体操作; 在 C:\Use原创 2022-06-09 15:41:35 · 5412 阅读 · 0 评论 -
JNI的数据类型及映射关系详解
JNI简介JNI是Java Native Interface的缩写,通过使用 Java本地接口书写程序,可以确保代码在不同的平台上方便移植;从Java1.1开始,JNI标准成为java平台的一部分,它允许Java代码和其他语言写的代码进行交互本地代码与 Java 虚拟机之间是通过 JNI 函数实现相互操作的;JNI 函数通过接口指针来获得,本地方法将 JNI 接口指针当作参数来接受;虚拟机保证在从相同的 Java 线程中对本地方法进行多次调用时,传递给本地方法的接口指针是相同的,本地方法被不同的 Ja原创 2022-05-23 16:36:11 · 1672 阅读 · 0 评论 -
全网最新:面向Android开发中的“卡顿问题及解决方法”
前言Android开发中卡顿问题一直是个比较棘手又重要的问题,严重影响用户体验;卡顿是人的一种视觉感受,比如我们滑动界面时,如果滑动不流畅我们就会有卡顿的感觉,这种感觉我们需要有一个量化指标,在编程时如果开发的程序超过了这个指标我们认为其是卡顿的开发app的性能目标就是保持60fps,这意味着每一帧你只有16ms≈1000/60的时间来处理所有的任务;Android系统每隔16ms发出VSYNC信号,触发对UI进行渲染,如果每次渲染都成功,这样就能够达到流畅的画面所需要的60fps什么是卡顿呢?安原创 2022-05-22 21:36:27 · 5212 阅读 · 0 评论 -
细究JVM的生命周期、钩子函数、内存模型及类加载过程
JVMJVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的Java语言的一个非常重要的特点就是与平台的无关性;而使用Java虚拟机是实现这一特点的关键。一般的高级语言如果要在不同的平台上运行,至少需要编译成不同的目标代码;而引入Java语言虚拟机后,Java语言在不同平台上运行时不需要重新编译Java语言使用Java虚拟机屏蔽了与具体平台相关的信息,使得Java语言编译程原创 2022-05-21 20:45:24 · 312 阅读 · 0 评论 -
实践GoF设计模式:Singleton Pattern 单例模式
前言我们在开发项目中,经常会遇到这种情况,为了节约所拥有的系统资源或数据的一致性时,需要保证系统中的某个类中有且只有唯一的一个实例,而且在其创建成功之后,我们将不能再次创建同类型的其他对象,也就是所有的操作都要以这个唯一的实例为中心,所以为了保证对象所具有的的唯一性,单例模式成为我们所具备的方法概念● 设计模式中单例模式是最为简单的形式之一,而且是使用最广泛的设计模式之一,其目的是为了将类的一个对象成为系统中的唯一实例,并提供一个访问它的全局访问点,该实例被所有程序模块共享● 要想实现这一点,可以原创 2022-05-20 21:03:25 · 284 阅读 · 1 评论 -
Activing为何能够作为Android组件中最为常用的组件之一?
什么是Activity?Android四大组件有Activity,Service服务,Content Provider内容提供,BroadcastReceiver广播接收器而Activity是作为Android组件中最基本也是最为常见用的四大组件之一Activity概要● 一个Activity是一个应用程序组件,提供一个屏幕,用户可以用来交互为了完成某项任务,例如拨号、拍照、发送email、看地图。每一个activity被给予一个窗口,在上面可以绘制用户接口;窗口通常充满屏幕,但也可以小于屏幕而浮原创 2022-05-20 16:22:22 · 276 阅读 · 0 评论 -
内存指的是什么?一文带你了解Android的内存优化
前言众所周知,内存优化可以说是性能优化中最重要的优化点之一,可以说,如果你没有掌握系统的内存优化方案,就不能说你对Android的性能优化有过多的研究与探索;本篇将带领大家一起来系统地学习Android中的内存优化可能有不少读者都知道,在内存管理上,JVM拥有垃圾内存回收的机制,自身会在虚拟机层面自动分配和释放内存,因此不需要像使用C/C++一样在代码中分配和释放某一块内存Android系统的内存管理类似于JVM,通过new关键字来为对象分配内存,内存的释放由GC来回收; 并且Android系统在内原创 2022-05-19 16:32:17 · 550 阅读 · 0 评论 -
深入分析Android“卡顿掉帧”问题
前言全球手机市场中,安卓和iOS一直占着主流市场,iPhone手机给人的感觉就是流畅,而安卓手机却一直是卡顿的代名词其实,安卓机刚上手时还是速度飞快的,并且基于它开放性的原则,受到多数用户的喜爱,但通病是:运行一段时间后,反应变慢、容易卡顿,这也是iOS用户不肯换安卓最主要的原因Android出现使用不流畅,卡顿的主要原因CPU使用率过高● 手机固件有缺陷,导致CPU使用率始终过高,这时您刷一个稳定点的ROM就好了● 开启了过多的程序;这时您可以使用进程管理程序清理一下后台进程● 某个程序原创 2022-05-18 20:25:49 · 2687 阅读 · 0 评论 -
进阶之路:细究“LiveData ”鲜为人知的身世背景及独特使命
LiveData的由来LiveData 的由来要追溯到 2017 年,那时,观察者模式有效简化了开发,但诸如 RxJava 一类的库有些太过复杂;为此,架构组件团队打造了 LiveData: 一个专用于 Android 的具备自主生命周期感知能力的可观察的数据存储器类;LiveData 被有意简化设计,这使得开发者很容易上手LiveData简述LiveData是一种可观察的数据存储器?● 存储数据,可以被观察者观察数据的变化LiveData具有生命周期感知能力?● 生命周期感知力可以确保只更新.原创 2022-05-18 16:35:34 · 243 阅读 · 0 评论 -
接口测试之深入解析 “Postman”工具
什么是接口测试?接口测试是测试系统组件间接口的一种测试,接口测试主要用于测试系统与外部其他系统之间的接口,以及系统内部各个子模块之间的接口; 测试的重点是要检查接口参数传递的正确性,接口功能实现的正确性,输出结果的正确性,以及对各种异常情况的容错处理的完整性和合理性主要用于测试系统与外部其他系统之间的接口,以及系统内部各个子模块之间的接口测试的重点是要检查接口参数传递的正确性,接口功能实现的正确性,输出结果的正确性,以及对各种异常情况的容错处理的完整性和合理性接口的定义我们常说的接口一般指2种●原创 2022-05-17 20:12:42 · 967 阅读 · 0 评论 -
深度解析基于Groovy的特定领域语言——“Gradle”
前言Android 插件其实是自定义的 Gradle 插件;Gradle 是一个专注于灵活性和性能的开源自动化构建工具,而插件的作用在于打包模块化的、可重用的构建逻辑;可以通过插件实现特定的逻辑,并打包起来分享给别人使用Gradle概述● Gradle是一个基于Ant和Maven概念的项目自动化构建工具;与Ant和Maven最大的不同之处在于,它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置,抛弃了传统的基于XML的各种烦琐配置● Gradle是一个基于Apache Ant和Apa原创 2022-05-17 16:34:26 · 392 阅读 · 0 评论 -
Android 工程师必知必会的“ AOP知识 ”
AOP 官方定义AOP 译为(面向切面编程)在软件业,AOP为Aspect Oriented Programming的缩写,意为:面向切面编程; 通过预编译方式和运行期间动态代理实现程序功能的统一维护的一种技术;AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率AOP 术语横切关注点对哪些方法进行拦截,拦截后怎原创 2022-05-16 20:11:12 · 733 阅读 · 0 评论 -
Android 开源社区“Model-View-Intent”架构模式
前言Android 开发的架构模式最流行的莫过于 Jetpack 架构组件提供的强大易用的 MVVM 实现;去年公司要重构一块老旧的重要业务,原先的 Java + 无架构实现被我们全面切换到 Kotlin + Coroutines + Jetpack AAC。总体效果令我们颇为满意,也没有发现什么明显的缺陷与短板Jetpack AAC 虽然很赞,但它不能用于 KMM,于是我们在开源社区找到了一个“替代品”——MVIKotlinMVIKotlin 是一款实现 MVI 模式的框架,它不仅能用于 KMM,还原创 2022-05-16 16:32:15 · 345 阅读 · 0 评论 -
时至今日 Android 系统的安全问题是否已经完美解决?
前言Android 系统非常安全以上是一句笑话但是我比大多数人都希望它成真希望将来有一天它可以吊打 ios 系统,大家真真正正的将其称之为国产之光Android 的出身● 安卓最初由Andy Rubin开发,2005年由Google收购注资,2007年Google与84家硬件制造商软件开发商及电信运营商组建开放手机联盟(Open Handset Alliance),共同研发与改良Android系统,随后Google以Apache开源许可证的授权方式,发布Android源代码● Google发原创 2022-05-13 19:15:57 · 267 阅读 · 0 评论 -
性能优化中最重要的优化点之一:Android内存管理机制
序言众所周知,内存优化可以说是性能优化中最重要的优化点之一,可以说,如果你没有掌握系统的内存优化方案,就不能说你对Android的性能优化有过多的研究与探索;本篇,将带领大家一起来系统地学习Android中的内存调度机制可能有不少读者都知道,在内存管理上,JVM拥有垃圾内存回收的机制,自身会在虚拟机层面自动分配和释放内存,因此不需要像使用C/C++一样在代码中分配和释放某一块内存;Android系统的内存管理类似于JVM,通过new关键字来为对象分配内存,内存的释放由GC来回收Android系统在内原创 2022-05-13 15:56:05 · 513 阅读 · 0 评论 -
Android开发之路:论对“渲染机制”的深入探讨
前言在 Android 开发行业工作有一段时间了,随着时间的增长,越发感觉自己的技术没有很大的长进,在平时也没有注意学习,只是完成了工作任务就可以了,这样下去的话,自己将很难有提高;面对现在激烈的竞争环境以及技术不断的更新,自己真的要去学习,不断的提高自己的技能,于是在今年年初就已经开始记录自己的学习笔记,技术总结,感受等,今天就向大家分享关于 Android 渲染机制的相关问题,相信这对自己也是对大家会有很大的益处渲染性能大多数用户感知到的卡顿等性能问题的最主要根源都是因为渲染性能。从设计师的角原创 2022-05-12 19:10:37 · 319 阅读 · 0 评论 -
深入解析插件的实现原理并浅析黑科技Gradle插件
前言插件化技术最初源于免安装运行apk的想法,这个免安装的apk可以理解为插件支持插件化的app可以在运行时加载和运行插件,这样便可以将app中一些不常用的功能模块做成插件,一方面减小了安装包的大小,另一方面可以实现app功能的动态扩展插件化技术也得到了长足的发展;与此同时,React Native,PWA,App Bundle,以及最近的Flutter也如火如荼;由于实现插件化需要太多的黑科技,它给项目的维护成本和稳定性增加了诸多不确定性我个人认为,2017年手淘Atlas插件化项目的开源标志着原创 2022-05-12 16:03:44 · 359 阅读 · 0 评论 -
Android虚拟机是以哪种方式实现的,底层逻辑又是怎样的?
前言我进入 Androird 行业也有一段时间,目前负责项目开发方面的工作,难免会用到虚拟机实现代码运行,最近我也一直在思考,虚拟机是以哪种方式实现的,底层逻辑又是怎样的?于是在网上查阅了相关的资料,结合自身的见解,将之整合在了一起,接下来我们就来了解一下虚拟机的相关知识虚拟机的前身● 众所周知,Android 最开始面世时,使用的开发语言是 Java,而 Java 是运行在 Java 虚拟机上的,即 JVM;那么为什么 Google 要单独设计一套新的 Dalvik 虚拟机来执行 Android原创 2022-05-11 19:15:44 · 1431 阅读 · 0 评论 -
友盟+u-apm:卡顿分析及优化卡顿的工具
前言Android开发中卡顿问题一直是个比较棘手又重要的问题,严重影响用户体验;卡顿是人的一种视觉感受,比如我们滑动界面时,如果滑动不流畅我们就会有卡顿的感觉,这种感觉我们需要有一个量化指标,在编程时如果开发的程序超过了这个指标我们认为其是卡顿的当用户在使用我们应用的时候,很多问题是很难被及时发现的,比如内存占用高,就容易造成app卡顿现象,一旦发生卡顿就会被用户直观的感受到,所以app卡顿是很影响用户体验的,所以优化一直是我们要考虑的重要部分,正文会介绍“优化卡顿的工具—友盟+u-apm”及几种优化原创 2022-05-11 16:13:32 · 562 阅读 · 0 评论 -
Android 里程碑:“插件化技术”
什么是插件化?通常,我们的app只有一个apk文件;而插件化是一种将app拆分为多个apk的技术,每一个apk都是app功能的一部分; App 的部分功能模块在打包时并不以传统方式打包进入 apk 文件中,而是以另一种形 式二次封装进 apk内部,或者放在网络上实时下载,在需要的时候动态对这些功能模块进行加载,称之为插件化这些单独二次封装的功能模块 apk ,就称作「插件」,初始安装的 apk 称作「宿主」总的来说:“插件化是组件化的更进一步推进”插件化的用途在学习一项新技能之前,我们首先要弄原创 2022-05-10 19:26:56 · 789 阅读 · 0 评论 -
谷歌移动应用程序开发跨平台框架“Flutter”
Flutter 背景谷歌给Flutter的定义:Flutter是面向iOS和Android应用,提供一套基础代码的高性能高可靠软件开发工具包,使开发者能够在iOS和Android两个最主要的移动平台上,打造统一代码的高性能应用概念Flutter是谷歌的移动UI框架,可以在iOS和Android上构建高质量的原生用户界面,可以将其理解为是一款移动应用程序SDK,包含框架、控件和一些工具;它使用的是 Google 自己开发的网络编程语言——Dart 语言,因此,开发者只要使用过 Java 或 JavaS原创 2022-05-10 15:14:33 · 1481 阅读 · 0 评论