手机版
热门标签
站点地图
我要投稿
广告合作
联系我们
搜 索
广告位招租
广告位招租
切换导航
首页
编程教程
编程导航
编程百科
编程问答
编程博文
编程实例
硬件设备
网络运营
软件教程
移动数码
办公软件
操作系统
人工智能
栏目导航
▸ 编程语言
▸ 前端开发
▸ 移动开发
▸ 开发工具
▸ 程序设计
▸ 行业应用
▸ CMS系统
▸ 服务器
▸ 数据库
公众号推荐
微信公众号搜
"智元新知"
关注
微信扫一扫可直接关注哦!
子栏目导航
iOS
Android
Swift
Hybrid
Cocos2d-x
Flutter
Xcode
Silverlight
cocoa
Cordova
编程之家
Android
“终于懂了~”系列:Android插件化
插件化技术最初源于免安装运行 的想法,这个免安装的 就可以理解为插件,而支持插件的 我们一般叫 宿主。想必大家都知道,在 系统中,应用是以 的形式存在的,应用都需要安装才能使用。但实际上 系统安装应用的方式相当简单,其实就是把应用 拷贝到系统不同的目录下、然后把 解压出来而已。常见的应用安装目录有:那可能大家会想问,既然安装这个过程如此简单, 是怎么运行应用中的代码的呢,我们先看 的构成,一个常见的 会包含如下几个部分:其实 系统在打开应用之后,也只是开辟进程,然后使用 加载 至进程
作者:码中之牛 时间:2022-12-01
简要的说一下:Fragment 间的通信方式?
Fragment 间的通信可以借助以下几种方式实现:EventBus 的优缺点都很突出。 优点是限制少可随意使用,缺点是限制太少使用太随意。因为 EventBus 会导致开发者在架构设计上“不思进取”,随着项目变复杂,结构越来越混乱,代码可读性变差,数据流的变化难以追踪。所以,规模越大的项目 EvenBus 的负面效果越明显,因此很多大厂都禁止 EventBus 的使用。所以这道题千万不要把 EventBus 作为首选答案,比较得体的回答是:为了迭代更加敏捷,Fragment 从 AOSP 迁移到了 And
作者:码中之牛 时间:2022-12-01
如何检测与修复 Android UI卡顿问题?线上及线下
在Android系统中,我们知道UI线程负责我们所有视图的布局,渲染工作,UI在更新期间,如果UI线程的执行时间超过16ms,则会产生丢帧的现象,而大量的丢帧就会造成卡顿,影响用户体验。从上可知,大部分的卡顿原因都产生于代码编写不当导致,而这类问题都可以通过各种优化方案进行优化,所以我们需要做的就是尽可能准确的找到卡顿的原因,定位到准确的代码模块,最好是能定位到哪个方法导致卡顿,这样我们APP的性能就能得到很大的提升。在开发阶段我们可以借助开发工具为我们提供的各种便利来有效的识别卡顿,如下:具体使用可以看b
作者:码中之牛 时间:2022-12-01
从官方文档中探索 Android App 架构演进的方向
近期,无意间重新翻阅了一下 Android 官方文档,发现文章的目录结构有不少改动的地方。我尝试从这些改动的地方,一探 Android App 架构的演进方向。当然文档中包含的主题有很多,本文主要从架构相关的主题进行介绍。官方文档中,中文与英文中的目录结构并不相同,英文版本结构更加合理,中文文档结构应该是翻译进度问题有所滞后。也正是由于这种滞后的现象,才可以更加方便的对比出官方对于各项技术的思考。下面我们就看下具体的差异点在什么地方。在中文版本的文档中,架构相关的内容散落在核心主题的各处,而在英文版本中则将
作者:码中之牛 时间:2022-12-01
Android - setVisibility() 失效,原理是因为内存泄露
目前,我在开发的一个 Android 项目需要各个功能做到线上动态化,其中,App 启动时显示的 Loading 模块,会优先检测加载远程的 Loading 模块,加载失败时,会使用 App 本身默认的 Loading 视图,为此,我编写了一个 LoadingLoader 工具类:LoadingLoader 工具类使用 Kotlin 的单例模式, 方法接收 2 个回调参数, 方法触发加载远程 Loading 模块,并根据加载结果执行回调,其中 用于防止该工具类被初始化多次。然后,在 App 的主入口 L
作者:码中之牛 时间:2022-12-01
“终于懂了~” 系列:Lifecycle
Lifecycle生命周期感知型组件,用来执行、操作、响应另一个组件(如 Activity 和 Fragment)的生命周期状态的变化。本文Lifecycle版本为2.2.0:implementation ‘androidx.lifecycler:lifecycle-common:2.2.0’ //22.2.23 更新 2.5 ,2.2是用的比较多的版本Lifecycle使用非常非常简单。默认你已经使用过Lifecycle。但如果我问你以下几个问题。你能回答出来几个?如果我是面试官,遇到简历上写掌握Jetp
作者:码中之牛 时间:2022-12-01
Android 应用换肤方案的总结
虽然现在已经有很多不错的换肤方案,但是这些方案或多或少都存在自己的问题。在这篇文章中,我将对 Android 现有的一些动态换肤方案进行梳理,对其底层实现原理进行分析,然后对开发一个新的换肤方案的可能性进行总结。这种方案是我之前用得比较多的一种方案。我在使用的时候也做了很多的调整。开源版本可以参考 Colorful 这个库.它的实现方式是:用户提前自定义一些 theme 主题,然后当设置主题的时候将制定主题对应的 id 记录到本地文件中,当 Activity RESUME 的时候,判断 Activity 当
作者:码中之牛 时间:2022-12-01
Jetpack Compose 远不止是一个UI框架这么简单~
Jetpack Compose是用于构建原生Android UI的现代工具包。 Jetpack Compose使用更少的代码,强大的工具和直观的Kotlin API,简化并加速了Android上的UI开发。这是Android Developers 官网对它的描述。本文不是教你Jetpack Compose 的一些基本使用方法,而是为啥我们需要Jetpack Compose 的一些简洁,让我们对Jetpack Compose 有更深层次的了解。在Android中,UI工具包的历史可追溯到至少10年前。自那时以
作者:码中之牛 时间:2022-12-01
货拉拉 Android 动态资源管理系统原理与实践
随着公司业务的扩展,货拉拉用户端apk包的体积也不断变大,过去一年,用户端android组进行了大量的瘦身工作,取得了较为显著的成果。再使用常规方法,已经很难优化包体积了。我们可以把一些使用频率相对较低的资源不打包进apk,并在需要时下载到本地(例如动画文件,字体,zip压缩包,so库等)我们注意到,货拉拉用户端apk中,使用了35个以上的so库,并且都支持arm64-v8a和armeabi-v7a这2种abi,结果就是so体积成倍上涨。单个文件的资源打包同字体资源多个文件的资源打包同帧动画资源。...
作者:码中之牛 时间:2022-12-01
深入分析 Android 系统返回手势的实现原理
相较 iOS 早期便有的全局返回功能,Android 直到版本 10 才姗姗来迟。但 Google 给这个功能添加了视图、动画和角度展示,更是向用户开放了手势敏感度的设置入口。本文就这个系统功能一探其实现原理,了解之后:源码版本:目录前瞻:SystemUI App 的 在构造的时候通过 DI 创建 实例,其是整个返回手势的核心管理类。EdgeBackGestureHandler 类在构造的时候初始化一些手势判断需要的参数和变量。NavigationBarView 初次添加到 Window 上的时候会
作者:码中之牛 时间:2022-12-01
“Android 面经”系列:咸鱼也会翻身~
从3月初开始复习,准备面试题。复习的滋尿主要是之前学习时做的一些笔记与一些行业大佬们给我一些面试文档,还有就是网上的其他博客资料。首先介绍一下自己基本情况:渣本毕业快4年,一直在小厂摸鱼混日子,学历和简历背景不是很好看,所以面试邀约也不是很多,面试也到处碰壁。从3月中旬开始面试,一直到4月底,到现在才有闲暇时间来写这篇面经。共面试9家公司,近20轮面试,拿到2个小公司和1个上市公司(不是出名的公司)的offer,最后准备去上市公司了。中间也投递了BAT、360、抖音、快手、平安等大厂的岗位,不过大部分没给面
作者:码中之牛 时间:2022-12-01
如何在 Jetpack Compose 中调试重组
自从 Jetpack Compose 的第一个稳定版本上线以来,已经过去了好几个月 (译注:本文写于2022年4月)。多家公司已经使用了 Compose 来参与构建他们的 Android 应用程序,成千上万的 Android 工程师每天都在使用 Jetpack Compose 。虽然已经有大量的文档可以帮助开发人员接受这种新的编程模式,但仍有这么个概念让许多人摸不着头脑。它就是,Compose 赖以运作的基础。如果您不熟悉此主题,我将在本文中详细介绍 。对于大多数用例,除非传入的参数变了,否则我们不希望重新
作者:码中之牛 时间:2022-12-01
一看就会 MotionLayout使用的几种方式
MotionLayout 的使用大家应该都会了,如果不会看这里。本文就不科普如何使用,什么属性是什么意思,怎么使用之类的了,这里只是探讨一下 MotionLayout 效果实现的几种方式。我们知道 MotionLayout 是 ConstraintLayout 库中的功能,我们可以直接使用 ConstraintLayout 来定义两组不同的 ConstraintLayout 布局,使用 ConstraintSet 来切换不同的布局。原始布局:改变后的布局:使用的时候:效果:需要注意的是这里的View
作者:码中之牛 时间:2022-12-01
差点被这波Handler 面试连环炮带走~
这波Handler让我错不急防~
作者:码中之牛 时间:2022-12-01
一次弄清楚 Handler 可能导致的内存泄漏和解决办法
Handler 可能导致的内存泄漏和解决办法
作者:码中之牛 时间:2022-12-01
Android 开发行业真的不行了嘛?
难道Android开发行业真的凉了吗?那身处于Android开发行业的人该怎么办?其实不管在任何行业,任何岗位,初级技术人才总是供大于求,都是不好找工作的,Android开发只是其中之一,同样,不管任何行业、岗位,技术过硬的也都是非常吃香的!说到底,是Android凉了吗?其实并没有!只是市场对于Android 开发者们的技术要求越来越高了,说到底看过硬的技术。如果你从事Android开发十年,技术还停留在最开始的前两年的技术,那你做不长久。技术不过硬,就算转去Java、大数据、人工智能,还是会问出类似的问
作者:码中之牛 时间:2022-12-01
ViewPager + RecyclerView的内存泄漏
之前在项目上做内存泄漏优化的时候有一个关于RecyclerView内存泄漏,页面结构如图:LeakCanary捕获的引用链如下找出问题从引用链可以看出关键点在于GapWorker,首先看看这个GapWorkerRecyclerView在android 21及以上版本会使用实现预加载机制,在Recyclerview的方法中尝试将其实例化,并通过GapWorker的方法将Recyclerview自身添加到的成员变量链表中去,在会调用的方法移除其对自身的引用,实例保存在其类静态成员变量(ThreadLocal
作者:码中之牛 时间:2022-12-01
Android 性能优化篇之SharedPreferences使用优化
是Android本地存储的一种方式,是以的形式存储在里,的使用示例及源码解析参见:Android本地存储之SharedPreferences源码解析。以下是的一些结论:为什么还会出现呢?我们来看下的逻辑(这里源码是看的的):将加入到队列中,在执行时利用机制可以实现对当前线程的阻塞效果,后续的中会将这里的取出来执行,即会阻塞等待写入磁盘。写入操作是通过在构造的子线程中完成的,写入成功后会通过释放中的锁,使得线程恢复执行。、执行时,都会调用到方法:、都是间接在中的执行的,这两个方法里都会执行到:这里
作者:码中之牛 时间:2022-12-01
Binder面试之:内存管理单元
MMU(Memory Management Unit)主要用来管理虚拟存储器、物理存储器的控制线路,同时也负责虚拟地址映射为物理地址,以及提供硬件机制的内存访问授权、多任务多进程操作系统。Android–Linux 内存 应用层在许多年以前,还是使用DOS或一些古老的操作系统时,内存很小,同时,应用程序也很小,将程序存储在内存中基本能够满足需要。随着科技的发展,图形界面及一些其他更复杂的应用出现,内存已经无法存储这些应用程序了,通常的解决办法是将程序分割成很多个覆盖块,覆盖块0最先运行,运行结束之后
作者:码中之牛 时间:2022-12-01
裸辞→自我放松→闭关→复习→斩获Offer
无业游民,闭关两月,斩获Offer
作者:码中之牛 时间:2022-12-01
为什么Android 开发都在意Framework 底层知识?
那你在工作中、团队里、面试时,也就拥有了同行难以复制的核心竞争力。如果你正在进阶这一块,
作者:码中之牛 时间:2022-12-01
Compose 的声明式代码如此简洁?
前面基于代码片段进行了一些对比,最后以CounterDemo为例,看一个完整功能下Flutter、Compose和Swift的代码对比,React与其他三者代码风格差异较大,就不参加比较了。可以感觉到Compose代码最简洁也最直观,SwiftUI通过ViewBuilder机制也可以实现与Compose类似的DSL,表现也非常不错,Flutter由于模板代码较多,在简洁程度上表现最差。点击这里查看获取方式传送门直达!!!httpshttpshttps。...
作者:码中之牛 时间:2022-12-01
如何高效、简单实现菜单拖拽排序?
本文主角是。它是RecyclerView对于item交互处理的一个「辅助类」,主要用于拖拽以及滑动处理。以接口实现的方式,达到配置简单、逻辑解耦、职责分明的效果,并且支持所有的布局方式。
作者:码中之牛 时间:2022-12-01
关于Android 模块化我有些事想说……
Map:简单明了,很容易入手,不会对编译时间产生任何影响,不会随着Gradle版本的升级而受影响,代码混淆时候不会有影响,无需配置混淆文件。APT:使用简单,使用注解配置,代码优雅,原理是用代码生成的方式生成新的文件。Transform:使用简单,使用注解配置,代码优雅,原理是用代码生成的方式生成新的文件,不过生成的文件的时期和APT不同,会编译时间产生少许影响。Map:在需要新添加映射的时候,需要手动添加,不然不会生效,代码不优雅。......
作者:码中之牛 时间:2022-12-01
热修复技术可谓是百花齐放
热修复技术可谓是百花齐放,微信的Tinker、QQ空间的Nuwa、饿了么的Amigo、美团的Robust等等,各个热修复方案争相发布,都声称自己可以做到全方位全功能的热修复。不过他们各自有自身的局限性,或者不够稳定,或者补丁过大,或者效率低下,或者使用起来过于繁琐,大部分技术上看起来似乎可行,但实际体验并不好。在2017年6月11日,手淘技术团队联合阿里云正式发布了Android移动热修复方案——Sophix。Sophix的核心设计理念,就是非侵入性。...
作者:码中之牛 时间:2022-12-01
Jetpack Compose 到底优秀在哪里?
这里来实现一个自定义布局以便加强理解,就叫它 CustomLayout 吧,在其内部的每个子项都会按照声明顺序逐次往右下角放置,且边界线对齐。CustomLayout 的使用方式和 Row、Column 等组件完全一样,随意嵌套即可。...
作者:码中之牛 时间:2022-12-01
Android组件化基础篇~
公司包含三大业务线,每条业务线都有独立的app。功能模块难免会有重合~举个栗子,直播功能本来只在业务线A使用,但是由于业务拓展,现在业务线B和C也需要使用直播功能。这时候就有必要将直播功能做成一个独立的直播组件供三条业务线使用。至此,你已经可以通过修改gradle.properties里边的liModule来控制是否以library的形式使用live组件了。这里可以思考个问题,假如我们项目中有好几个类似于live这样的组件,是否每个组件都需要做这么繁琐的配置呢?能否将这些配置抽出来,统一管理?组件间通信。.
作者:码中之牛 时间:2022-12-01
Framework 到底该怎么学习?
在今后的更新里,我会把自己解决过,而且觉得有学习价值的bug写下来,或者以小作业的形式要求大家对某些代码进行改动让大家可以在写代码,编译,刷机,验证在这个动手的过程中学习。(比如谷歌很多在公司待了10年以上的老鸟,其中有一位大神叫diannehackborn,这位程序员可以说是安卓系统的殿堂级人物,谷歌里面都有段子说,在安卓组里面的一个成就是在内部技术论坛发问题是否有得到过Dianne的回复,本人发过的两个安卓问题都得到了Dianne大神的临幸0.0)学习源码的第一步,其实是刷设备。...
作者:码中之牛 时间:2022-12-01
想要彻底搞的性能优化,得先从底层逻辑开始了解~
篇幅不长,讲了我对性能优化的深刻的理解,也许说出来你都懂,是的,大道理大家都懂,加油,你是最胖的。下面是我闲暇时刻整理的一些精品资料。可以有效的帮助大家掌握知识、理解原理。当然你也可以拿去查漏补缺,提升自身的竞争力。有需要的小伙伴可以点击这里查看获取方式传送门直达!!!里面记录许多Android相关学习知识点。httpshttpshttpshttps。...
作者:码中之牛 时间:2022-12-01
Android Jetpack 辩论现场~
作者i校长转载地址https。
作者:码中之牛 时间:2022-12-01
上一页
2
3
4
5
6
7
8
9
下一页
小编推荐
热门标签
更多
python
JavaScript
java
HTML
reactjs
C#
Android
CSS
Node.js
sql
r
python-3.x
MysqL
jQuery
c++
pandas
Flutter
angular
IOS
django
linux
swift
typescript
路由器
JSON
路由器设置
无线路由器
h3c
华三
华三路由器设置
华三路由器
电脑软件教程
arrays
docker
软件图文教程
C
vue.js
laravel
spring-boot
react-native