自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

1

  • 博客(298)
  • 收藏
  • 关注

原创 反射真的很耗时吗,反射 10 万次,耗时多久?

无论是在面试过程中,还是看网络上各种技术文章,只要提到反射,不可避免都会提到一个问题,反射会影响性能吗?影响有多大?如果在写业务代码的时候,你用到了反射,都会被 review 人发出灵魂拷问,为什么要用反射,有没有其它的解决办法。而网上的答案都是千篇一律,比如反射慢、反射过程中频繁的创建对象占用更多内存、频繁的触发 GC 等等。那么反射慢多少?反射会占用多少内存?创建 1 个对象或者创建 10 万个对象耗时多少?单次反射或者 10 万次反射耗时多少?在我们的脑海中没有一个直观的概念,而今天这篇文章将会告诉

2022-05-17 13:48:17 518

原创 Google I/O 2022:Jetpack Part-Jetpack 新功能及相关更新~

❝原文链接 https://android-developers.googleblog.com/2022/05/13-things-to-know-for-android-developers-at-google-io.html❞Android Jetpack 作为 Android 开发的关键支柱,目前它已经包含了 100 多个库、工具和指南,可帮助开发人员获得最佳的开发实践、减少样板代码,并编写跨 Android 版本和设备的可兼容运行的代码。Google Play 中的大多数 App 都使用.

2022-05-16 13:07:19 403

原创 Android性能优化之图片压缩综合解决方案

作者:拖鞋王子猪转载地址:https://juejin.cn/post/7087388674735734797在Android中我们经常会遇到图片压缩的场景,比如给服务端上传图片,包括个人信息的用户头像,有时候人脸识别也需要捕获图片等等。这种情况下,我们都需要对图片做一定的处理,比如大小,尺寸等的压缩。常见的图片压缩方法质量压缩尺寸压缩libjpeg质量压缩首先我们要介绍一个api–Bitmap.compress()@WorkerThreadpublic boolean comp.

2022-05-13 14:05:35 591

原创 EventBus 源码分析 - 注解 + 反射

作者:萌果爱吃柠檬转载地址:https://juejin.cn/post/7096415729934827551EventBus 源码解析随着 LiveData 和 Kotlin Flow 的出现,EventBus 已经慢慢过时了。不过 EventBus 源码的设计思想以及实现原理还是值得我们去学习的。getDefault() 方法EventBus().getDefault().register(this)首先 EventBus 的创建用到了 DCL 单例模式,源码如下:public c.

2022-05-12 15:16:17 236

原创 Android性能优化:定性和定位Android图形性能问题

作者:飞起来_飞过来转载地址:https://juejin.cn/post/7096288511053004830简介本文记录一次Android图形性能问题的分析过程——发现、定性和定位图形性能问题,以及探讨的性能优化方案。环境:Android Q + MTK + ARM Mali-G72。所分析的性能问题(下称case):打开录屏应用并启动后台录屏,滑动前台应用(滑屏)。性能表现差:CPU、GPU负载显著升高、掉帧、用户明显卡顿感,帧率不足30帧,帧渲染、合成耗时急剧飙升(渲染耗时平均为29.

2022-05-11 13:50:04 2131

原创 【Jetpack】学穿:LiveData →

作者:coder_pig0x1、引言在开始这篇文章前,我就遇到了第一个关于LiveData的问题:该怎么翻译这个词呢?活的数据?→ 有点奇怪,难不成还有死的数据?可观察数据?→ 感觉跟Observable有点沾边了生命周期感知数据?→ 名字也忒长了…自己想不到,那就集思广益,尝试向群里的小伙伴发起咨询:好像也没找到比较好的翻译 (好像越来越可刑),索性就不翻了,哈哈哈~LiveData 一言以蔽之LiveData 是 能感知生命周期的、可观察的、粘性 的 数据持有者,以 数.

2022-05-10 14:07:53 743

转载 Android 12 还没用上,Android 13 已经来了

作者: 彭旭锐Android 13 开发者预览版从 2022 年 2 月正式启动,3 月份 Google 已经发布了第 2 个开发者预览版。目前更新的内容主要还是围绕隐私和安全这个主题,我们会持续跟进官方的 发布计划表,最终版本预计在今年年底发布。针对开发者在进行版本适配过程中遇到的问题,我们建立了 GitHub · AndroidPlatformWiki。我们希望站在开发者的视角,全面且深刻地解读每个 Android 版本更新,以此建立起一个体系化的 Android 系统适配手册。具体包括:两.

2022-05-09 13:36:57 733

转载 【Android】FFmpeg实现视频剪辑,并兼容Android 12

作者:天枢破军需求分析需求很简单,在安卓手机上进行视频裁剪,只要裁短,不要求拼接,也不要求裁剪画面。编码形式直接复制原本的,分辨率码率帧率都直接照搬原本的。找轮子尽量不要重复造轮子,有现成的直接找现成的。这里找了一个ffmpeg实现的轮子来直接用,唯一问题是项目是5年前的,要做些适配。VideoCrop分析轮子5年前的轮子。。。试试在5年前的系统上跑一下。Android 9能正常运行,到了Android 10就报找不到文件了。在各个版本跑了一遍以后,发现以下问题等待解决:输入文件路径是.

2022-05-08 20:41:12 1012

转载 Handler阻塞和唤醒条件

作者:贾东风阻塞条件分析MessageQueue的next函数,发生阻塞只会存在以上两种情况队列中消息个数为0,且没有可处理的IdleHandler,此时会一直阻塞队列中消息个数不为0,但是队列头消息还未到执行时间,且没有IdleHandler要执行,此时会阻塞时间n,n表示队列头消息距离执行的时间以上两种阻塞情况,mBlock都为true.只有这两种情况需要唤醒。一言以蔽之,没有IdleHandle要执行,且队列中没有立即要可执行的消息时,会阻塞唤醒条件唤醒条件:队列为空,.

2022-05-07 13:58:11 616

转载 Android 架构最新进展 | MVI = 响应式编程 + 单向数据流 + 唯一可信数据源

作者:唐子玄引子MVI 是Model-View-Intent的简称,它们分别表示。。。。。我并不打算逐个字母介绍它们代表的意思。因为这样一点也不能增进对 MVI 的理解,反而会对它的认识蒙上厚厚的一层迷雾。奥古斯都在《忏悔录》里面问我这样一个问题:“时间到底是什么?你不问我的时候,我是知道的;你一问我,我就不知道了。”把“时间”换成“MVI”,这个问题同样困扰着我:“MVI 到底是什么?你不问我的时候,我是知道的;你一问我,我就不知道了。”维特根斯坦会说,上面是一个非法的问题,源于错误地使.

2022-05-06 13:44:33 518

转载 zygote启动过程

作者:贾东风1. zygote是什么?在 Android 系统中,JavaVM(Java 虚拟机)、应用程序进程以及运行系统关键服务的 SystemServer 进程都是由 Zygote 来创建的,我们也将它称为 孵化器。它通过 fock (复制进程)的形式来创建 "应用程序进程" 和 "SystemServer 进程",由于 Zygote 进程在启动时会创建 JavaVM,因此通过 fock 而创建的 “应用程序进程” 和 “SystemServer 进程” 可以在内部获取一个 JavaVM 的实.

2022-05-05 16:16:00 545

原创 快停止你的CV操作,快让开源框架的发挥最大作用吧~

前言对于开发者来说,框架并不陌生,在工作中普遍都会用到各种开源框架,框架的使用可以让我们用少量的代码实现所需要的复杂功能,大大的减少了工作量,提高了工作效率。但是这样也让很多人只会使用框架,却看不懂源码,不了解其底层机制与实现原理,最后成为一名代码的搬运工。就像朋友开玩笑说的 “我们不生产代码,我们只是代码的搬运工” 。开发者工作到了一定的年限,如果还没学会阅读源码,那么就会遇到瓶颈。因此想要继续在这条路上走下去,提高自己的技术能力,阅读源码,了解底层机制与实现原理非常重要。如何学习框架源码?

2022-04-29 20:58:38 116

转载 Android 文件存储系统

作者:自动化BUG制造器存储的可选项Android 的文件系统类似于其他平台的基于磁盘的文件系统。包括以下几种存储类别:1.App 私有的存储空间2.共享的存储空间3.Preferences,以 key-value 的形式存储一些原始的内容,如 SharedPreferences。4.数据库不同的存储类别扮演了不同的角色,比如 App 的私有存储空间是无法被外部访问的,可以用来存储一些 App 私有的敏感信息;共享的存储空间可以存储一些所有应用都可以访问的文件,例如媒体、文档等可公开的文件.

2022-04-29 14:28:40 589

转载 Android Google Play 照片选择器(Photo Picker)

作者:无敌何尝不可照片选择器Android 13 包含对新照片选择器工具的支持。此工具为用户提供了一种安全的内置媒体文件选择方式,让其无需向应用授予对整个媒体库的访问权限。注意:即将发布的 Google Play 系统更新预计会包含与照片选择器有关的新功能。在一项此类更新中,该库将增加对以 Android 11(API 级别 30)或更高版本为目标平台的应用(不包括 Android Go 设备)的支持。特别注意:对于国内手机而言,没有Google Play系统更新是不是就不能使用这个功能?.

2022-04-28 14:01:05 1190 1

转载 我的 Android 应用安全方案梳理

作者:shouheng作为独立开发者,应用被破解是一件非常让人烦恼的事情。之前有同学在我的一篇博文下面问,有没有一些 Android 防破解的方法。在多次加固、破解、再加固、再破解的过程中,我也积累了一些思路和方法。这里分享一下,如果需要用到,可以作一个参考。先说一个结论,也是我在 Stackoverflow 上面的一个国外程序员的答案,就是说,APK 包已经在别人手上了,我们能做的不过是提升被破解的难度,如果真的遇到非常“执着”的,要破解一样被破解。如果逻辑非常值钱,那么最好还是把逻辑放到服务.

2022-04-27 14:29:38 190

转载 Android自动生成代码,可视化脚手架,将大大提高开发效率

作者:二流小码农实话实说,APP端的一个灵活可用的脚手架,市场还是很匮乏的,相关的资料也是乏陈可善,在探索了一些渠道及不断的碰壁之后,针对自己公司所用的技术范畴,开发了一个适用的脚手架,技术也许不一,但开发脚手架的思路是百变不离其宗的,无非就是技术模板的不一样,目前已经更新到了1.2版本,基本上可以满足一部分的开发需求,后续扩展的功能还有很多,一个最终的目标是解放开发人员的双手,让开发人员回归逻辑的编写与空出学习的时间。目前的可视化脚手架,如下图,包含了自动化创建项目,创建主组件,单组件,Activ.

2022-04-26 14:46:44 958

转载 自定义View - 仿酷狗音乐主页面侧滑效果

作者:Delusion概述最近在用酷狗音乐时发现酷狗音乐的主页侧滑效果不错,忍不住手痒痒,就想实现一下看看效果分析我们可以看出分为两个部分 (菜单页面、主题页面)所以这里采用自定义ViewGroup向左滑动时会有一个放大和缩小的动画,在这里基本可以确定需要处理触摸事件,及触摸时的动画快速滑动时的打开关闭处理(GestureDetector收拾处理类)实现思路这里我们选择继承HorizontalScrollView 水平滚动布局 来实现,然后写好布局文件这个和HorizontalSc.

2022-04-25 13:43:37 270

转载 2022 Android 官方现代应用架构解读 - Data Layer

作者:madroid概述📌 名词解释DataSource:数据源类,是 App 中业务逻辑与系统 API 和三方 SDK 的桥接类。Repository:数据仓库类,其使用 DataSource 处理业务逻辑,并将数据提供给上层调用者的类。Data Layer 主要做了下面两件事情:通过 DataSource 封装系统及三方 API;通过 Repository 使用 DataSource 封装业务逻辑,并暴露给使用者;因此,Data Layer 主要也是由 DataSource .

2022-04-24 15:03:04 422

转载 【性能优化】大厂OOM优化和监控方案

作者:蓝师傅一、前言随着项目不断壮大,OOM(Out Of Memory)成为奔溃统计平台上的疑难杂症之一,大部分业务开发人员对于线上OOM问题一般都是暂不处理,一方面是因为OOM问题没有足够的log,无法在短期内分析解决,另一方面可能是忙于业务迭代、身心疲惫,没有精力去研究OOM的解决方案。这篇文章将以线上OOM问题作为切入点,介绍常见的OOM类型、OOM的原理、大厂OOM优化黑科技、以及主流的OOM监控方案。文章较长,请备好小板凳~二、OOM问题分类很多人对于OOM的理解就是Java虚拟.

2022-04-23 20:52:33 605

转载 View是如何绘制到屏幕上的?

作者:宋智孝的小迷弟前言在Android中如果要显示一个页面,那么只需要在Activity的onCreate()方法中,把我们写好的页面布局layout传入到setContentView()方法中即可,这样Activity就会完成接下来的工作,通过一系列的操作把我们想要的布局页面显示出来,不需要我们再做任何的处理,所以最初的时候一直以为是Activity将layout布局中的控件绘制出来的,但事实究竟是怎样的呢,我们来一探究竟。首先,我们都知道在onCreate()方法中调用setContentV.

2022-04-22 14:15:22 330

转载 吹爆系列:Android 插桩之美,全面掌握~

作者:阿明的小蝴蝶插桩插桩是什么?你在开发中有用过插桩的技术吗?所谓的插桩就是在代码编译期间修改已有的代码或者生成新代码。插桩具体在编译的哪个流程介入呢?插桩的作用与场景代码生成代码监控代码修改代码分析Java 源文件方式类似 AndroidAnnotation/APT(Annotation Processing Tool),可以在代码编译期解析注解,并且生成新的 Java 文件,减少手动的代码输入。 这些代码生成的场景,它们生成的都是 Java 文件,是在编译的最开始介入.

2022-04-21 15:07:21 2366

转载 用上这个 Mock 神器,让你的开发爽上天

作者:戈城客户端的痛苦作为客户端,最痛苦的是什么时候?每个迭代,需求文档跟设计稿都出来了,静态页面唰唰两天就做完了。可是做客户端又不是简单地把后端吐出来的数据放到页面上就完了,还有各种客户端处理逻辑啊。后端接口还没出来,我就得边写代码边测客户端效果,又没有真实数据。有人建议用 Mock 工具,可是每个接口都要自己写 Mock 规则,这得浪费多少时间呀。等到后端好不容易把接口写出来了,一对接联调,好多字段的数据又跟我 Mock 的数据对不上,又得重新改代码。每个迭代都是一场折磨。就是那种,.

2022-04-20 13:49:49 163

原创 Android 线上 OOM 的排查过程

作者:王晨彦开篇一天,后台统计到线上有大量 OOM 崩溃,小王收到老板的紧急指令,立即排查!小王心想,这还不简单,待我看看崩溃堆栈,分分钟解决。于是小王不慌不忙的打开崩溃后台,一看傻眼了,同样的 OOM,却有几十种不同的堆栈,大到创建 View,小到 new 一个 String。小王差点骂了出来:这 OOM 不讲武德啊!骂完之后,还是得解决问题啊,否则怎么面对老板啊心路历程正郁闷着,小王突然想起曾经看过性能优化的文章,里面介绍了 Android Studio 中集成的 Profiler .

2022-04-19 13:52:04 787 1

转载 Compose + MVI + Navigation 快速实现 wanAndroid 客户端

作者:程序员江同学前言今年七月底,Google 正式发布了 Jetpack Compose 的 1.0 稳定版本,这说明Google认为Compose已经可以用于生产环境了。相信Compose的广泛应用就在不远的将来,现在应该是学习Compose的一个比较好的时机在了解了Compose的基本知识与原理之后,通过一个完整的项目继续学习Compose应该是一个比较好的方式。 本文主要基于Compose,MVI架构,单Activity架构等,快速实现一个wanAndroid客户端,如果对您有所帮助可以点.

2022-04-18 13:52:52 253 1

转载 设计模式-创建型-单例模式

作者:wuzhuoyu前言单例模式介绍在23种设计模式之中它是最简单的,应用范围最广的一种,保证一个类仅有一个实例,并提供一个访问它的全局访问点##简介定义单例模式( Singleton)隶属于创建型,原理主要是一个类有且仅有一个实例,内部提供给外部该实例的访问方式。特点有且仅有一个实例,并且构造函数私有化,仅向外部提供获取实例的方式,一般为getInstance概要全局一个对象,对象构造私有化理解实现现实模型大家都知道我有一个卖果子的老乡,我的果子都是在他这儿买的,老.

2022-04-16 21:29:34 86

转载 Databinding+LiveData轻松实现无重启换肤

作者:ezy最近项目需要用到无重启动态换肤功能,本来打算用github上star最多的 Android-skin-support但仔细一看发现太复杂而且2年没维护+大量issues没解决,最终放弃经过探索,发现 Databinding+LiveData 能低成本实现无重启换肤无重启动态换肤(不需要recreate())无需制作皮肤包无额外依赖(Databinding+LiveData本身几乎开发必备)低侵入性AppCompat和Material组件默认支持(少量属性需要额外支持或适配).

2022-04-15 14:27:59 364

转载 适用于Android开发者的Databinding自定义view双向绑定

作者:BuildF前言本篇默认读者已经对databinding 有过一定的了解,如果不甚了解,可以看看东哥的DataBinding最全使用说明,很多人排斥databinding,但也有人喜欢使用。虽然它有争议,但是不妨碍我们去学习、了解。本篇讲述的是自定义view如何来双向绑定数据,来实现在xml中使用自定义也能达到 app:customvalue="@={userName}"的效果app:xx=“@{userName}” 单向绑定app:xx=“@={userName}” 双向绑定引入.

2022-04-14 15:22:24 3060

原创 子线程更新UI全解

1 子线程更新 UI 异常设计理念及简单源码解析初学者可能会犯在子线程更新 UI 的错误,例如:thread { imageView.setBackgroundColor(Color.RED) }一旦运行,应用会直接崩溃并抛出异常,这也是我们 Android 开发的一条铁律:在子线程中不能更新 UI。那么为什么 Android 不让子线程更新 UI 呢?原因在于现在屏幕刷新率最低是 60Hz,意味着最多每 16ms 就会刷新一次屏幕,所以 UI 更新要尽可能快速,否则会丢帧导致卡顿。那么 UI 更

2022-04-13 15:45:58 546

原创 Android多线程之IntentService

####IntentService是什么?IntentService继承自Service,所以IntentService也是四大组件之一,IntentService内部封装了HandlerThread线程 (只有一个线程) 来按顺序处理异步任务,通过startService(Intent) 来启动IntentService并通过Intent来传递异步任务,当任务结束后IntentService通过*stopSelf(int startId)来自己停止服务。IntentService是一个抽象类,如果想使用

2021-10-15 20:18:28 318 3

原创 Android Jetpack系列之ViewModel

ViewModel介绍ViewModel的定义:ViewModel旨在以注重生命周期的方式存储和管理界面相关的数据。ViewModel本质上是视图(View)与数据(Model)之间的桥梁,想想以前的MVC模式,视图和数据都会写在Activity/Fragment中,导致Activity/Fragment过重,后续难以维护,而ViewModel将视图和数据进行了分离解耦,为视图层提供数据。ViewModel的特点:ViewModel生命周期比Activity长数据可在屏幕发生旋转等配置更改后继续留存

2021-10-13 15:40:39 224 4

原创 Jetpack 全家桶之 LiveData 使用及源码篇

简介LiveData 是一种可观察的数据存储器类。与常规的可观察类不同,LiveData 具有生命周期感知能力,意指它遵循其他应用组件(如 Activity、Fragment 或 Service)的生命周期。这种感知能力可确保 LiveData 仅更新处于活跃生命周期状态的应用组件观察者。如果观察者(由 Observer 类表示)的生命周期处于 STARTED 或 RESUMED 状态,则 LiveData 会认为该观察者处于活跃状态

2021-10-12 20:54:42 218 2

原创 Jetpack Compose 完全脱离 View 系统了吗?

前言Compose正式发布1.0已经相当一段时间了,但相信很多同学对Compose还是有很多迷惑的地方Compose跟原生的View到底是什么关系?是跟Flutter一样完全基于Skia引擎渲染,还是说还是View的那老一套?相信很多同学都会有下面的疑问下面我们就一起来看下下面这个问题现象分析我们先看这样一个简单布局class TestActivity : ComponentActivity() { override fun onCreate(savedInstanceState:

2021-10-12 15:06:11 545 2

原创 源码解读之 Android App应用是如何启动的?

前言作为多年的 Android 开发,写了不少应用,但是一个App到底是怎么启动起来的?你要说桌面点一下就启动了,那也对。但是它的启动过程呢?带着这样的疑问,咱们来一步步学习。Android 启动过程一般在任何平台上,都会逐步加载和执行以下组件:Boot loaderU-boot (optional)KernelAndroidAndroid进程有以下顺序:InitZygoteSystem ServerService ManagerOther Daemons and proce

2021-10-11 20:46:25 1223 1

原创 更高级的 Android 启动任务调度库

之前的文章中,我介绍了自研的 Android 启动任务调度工具 AndroidStartup。近期,因为在组件化项目中运用该项目的需要,我对这个库做了一番升级。在最新的 2.2 版本中,我新增了一些特性。相比于目前市面上其他的启动任务调度库,使其具备了更多的优势。这里我只介绍下经过新的版本迭代之后该项目与其他项目的不同点。对于其基础的实现原理,可以参考我之前的文章 《异步、非阻塞式 Android 启动任务调度库》。1、支持多种线程模型这是相对于 Jetpack 的启动任务库的优势,在指定任务的时候,你

2021-10-10 20:56:06 247 1

原创 Kotlin是如何帮助你避免内存泄漏的?

首先,本文的代码位置在**https://github.com/marcosholgado/performance-test/tree/kotlin-mem-leak**中的kotlin-mem-leak分支上。 我是通过创建一个会导致内存泄漏的Activity,然后观察其使用Java和Kotlin编写时的表现来进行测试的。 其中Java代码如下:public class LeakActivity extends Activity { @Override protected void onCreat

2021-10-09 20:49:15 802 2

原创 Android跨进程传大图思考及实现——附上原理分析

1.抛一个问题这一天,法海想锻炼小青的定力,由于Bitmap也是一个Parcelable类型的数据,法海想通过Intent给小青传个特别大的图片intent.putExtra("myBitmap",fhBitmap)如果“法海”(Activity)使用Intent去传递一个大的Bitmap给“小青”(Activity),如果你的图片够大,会出现类似下面这样的错误,请继续往下看:Caused by: android.os.TransactionTooLargeException: data parc

2021-10-08 20:47:18 647 3

原创 下一个 Android 技术前沿:快速掌握 Jetpack Compose

Compose简介Jetpack Compose:利用声明式编程构建Android原生界面(UI)的 工具包优势更少的代码、代码量锐减强大的工具/组件支持直观的 Kotlin API简单易用Compose 编程思想声明性编程范式:声明性的函数构建一个简单的界面组件,无需修改任何 XML 布局,也不需要使用布局编辑器,只需要调用 Jetpack Compose 函数来声明想要的元素,Compose 编译器即会完成后面的所有工作举个栗子:简单的可组合函数class MainA

2021-10-08 17:04:42 346 2

原创 Android工程师,如何使用Kotlin提供生产力?

Kotlin 以其简洁的特性而闻名,而在我们的实践中,更加简洁就意味着更加高效。事实上,在使用 Kotlin 的专业 Android 开发者中,有多达 67% 的人表示 Kotlin 已经帮助他们提升了生产力。在接下来的内容中,我会分享一些 Kotlin 帮助我们的合作伙伴工程师们提高生产力的方式,并为您介绍有助于此的 Kotlin 功能。在使用 Kotlin 的专业 Android 开发者中,有多达 67% 的人表示 Kotlin 已经帮助他们提升了生产力简洁、简单且高效Kotlin 的简洁性对开发

2021-09-29 21:15:42 126 1

原创 面试必问,敲重点!讲一下 Android Application 启动流程及其源码?

一、写在前面在开始之前,你需要知道下面几点:有一份编译好的 Android 源码,现在的 AS 基本能满足,动手跟着步骤走,理解更深刻对 Binder 机制有一定的了解本文基于 API 26,用什么版本的源码并不重要,大体的流程并无本质上的区别从用户手指触摸点击桌面图标到 Activity 启动关键类简介ActivityManagerService:AMS 是 Android 中最核心的服务之一,主要负责系统中四大组件的启动、切换、调度及应用进程的管理和调度等工作,其职责与操作系统

2021-09-29 20:46:17 2016 2

原创 Android每日一题:如何解决ScrollView嵌套中一个ListView的滑动冲突?

去新成立了研发中心面试,面试官很和蔼的和我讨论了一些技术问题,大多数还能应付,记忆较深的便是如何处理嵌套ListView的滑动事件冲突问题。这个问题当时我没有回答好,主要是我对自定义View方面经验不足,Touch事件的分布机制也没有理解清楚。之后并没有给我答复,到是过了两个月HR再次联系我,问我如果过去的话什么时候能到岗,并强调他们是由于公司投资的手绪问题拖了这么久。只能感叹能否进某家公司其实也是需要缘分的。我当时对在本地的公司已经不感兴趣了,因为“世界这么大,我想出去看看”。面试题:如何解决Scr

2021-09-28 22:19:59 291 2

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除