自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(67)
  • 资源 (1)
  • 收藏
  • 关注

原创 Android Jetpack - 使用 Navigation 管理页面跳转

简介Navigation 是用来管理 APP 里页面跳转的。起初,我以为它是用来代替 startActivity 的,但其实并不是,大家往下看就知道它的作用了。另外,iOS 的同学可能会有似曾相识的感觉,Navigation 应该是有借鉴 Storyboard 的。使用我们先来看看 Navigation 的实现过程。添加依赖首先,需要使用 Android Studio 3.2 以上版本才能使用 Navigation。在 build.gradle 中添加依赖:implemen

2020-05-29 20:54:15 300

原创 你的ViewPager八成用错了

前言今天的文章内容是关于ViewPager的,很多同学可能会吐槽:怎么还写这种“低级”的内容!为什么?因为绝大多数的同学都用错了,当然这主要的原因是搜索引擎推出来的文章大多都是错的!正文一、错误用法不知道有多少同学是这样用ViewPager的?class TestViewPagerActivity : BaseActivity() { private lateinit var adapter: ViewPagerAdapter private val fragments

2020-05-29 20:43:04 210

原创 Handler 都没搞懂,还谈什么跳槽?

前言做 Android 开发肯定离不开跟 Handler 打交道,它通常被我们用来做主线程与子线程之间的通信工具,而 Handler 作为 Android 中消息机制的重要一员也确实给我们的开发带来了极大的便利。可以说只要有异步线程与主线程通信的地方就一定会有 Handler。那么,Handler 的通信机制的背后的原理是什么?本文带你揭晓。注意:本文所展示的系统源码基于 Android-27 ,并有所删减。小编自己整理了一份Android 核心知识点的文档,里面都是现在比较流..

2020-05-29 17:05:21 480

原创 Android 工程师跳槽面试经验分享

写在前面Android开发的学习进阶需要一份系统的 知识体系 ,在这里,让我们一起携手变成更好的自己!这些经验是我最近四个月,从准备面试到找到合适工作的汗水和泪水,并且还有一份相关的知识点整理成的PDF分享,希望对你们能有帮助!define 跳槽首先请思考一个问题:在你眼中 “跳槽”包括哪些内容?/******** 华丽丽丽的分割线 begin ************//******** 先思考 3 秒再往下看 ************//******** 华丽丽丽的分割

2020-05-29 15:27:27 855

原创 Android开发: 分享利用好Kotlin的特点提高开发效率

Kotlin-first but not kotlin-must谷歌在 I/O 大会上宣布,Kotlin 编程语言现在是 Android 应用程序开发人员的首选语言后,有更多的安卓程序投入Kotlin的怀抱。 Kotlin的语法糖更加提高了开发的效率,加快了开发速度,使开发工作变得有趣,也让我们有更多时间写注释了(笑)。但是其实对于Kotlin和Java在Android开发上的选择,个人觉得这个除了开发人员对语言的喜好的,同时也会应该到各自语言的魅力和特点,甚至项目的需求以及后续维护等等...

2020-05-28 22:29:26 869

原创 对于线程和线程池还有线程安全的理解

进程和线程进程和线程都是一个时间段的描述,是CPU工作时间段的描述,不过是颗粒大小不同。他们主要区别是:进程不共享内存,线程可以共享内存。线程:CPU中的Thread: CPU中的线程,我们也叫它们Thread,和OS中的线程的名字一样。他们和cpu相关,常说的4核心8线程就是指cpu线程。CPU的Thread就那么固定几个,是稀缺资源。 操作系统中的Thread: 操作系统中的进程可以很多,进程中的线程就更多了。软件操作系统调度的基本单位是OS的Thread。我们开发中..

2020-05-28 16:26:11 673

原创 腾讯面试官问:你知道什么是AOP吗?AOP与OOP有什么区别,谈谈AOP的原理是什么?

面试官: 你知道什么是AOP吗?AOP与OOP有什么区别,谈谈AOP的原理是什么心理分析:一旦问到aop面试官在开发自己的项目中 肯定是用到了aop切面编程的。这个时候求职者需要格外注意,特别是aop 在编译时的性能优势,apk编译的原理讲起。切勿将aop的概念弄混,一定要将oop面向对象与aop面向切面的场景说出来求职者:aop实现的三大方式(反射 (xutil) apt注解(ButterKnife) aspect (本文即将讲到的)) 说出各自的优缺点一、AOP概念百度百科..

2020-05-27 20:51:03 871

原创 做了6年的Android开发,整理了这份900多页的PDF面试整理,薪资Double!

在我认为,对于Android面试以及进阶的最佳学习方法莫过于刷题+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现面试并不难,其次就是在刷题的过程中有没有去思考,刷题只是次之,这又是一个层次了,这里暂时不提后面再谈。我总结了一系列大厂面试中常问的面试技术点,深入解析以及答案,将为最近准备面试的各开发者去大厂保驾护航,何谓面试? 博主所理解的面试,它是一个过程,是不断沉淀、不断总结、善于传达自己的专业领域技术以及解决问题能力的过程。以下是博主总结的

2020-05-27 19:53:11 286

原创 Android开发大佬的Offer收割之旅,从字节跳动到BAT

对于面试的准备,算法建议对着牛客网刷下《剑指Offer》和《算法》,然后之前项目中用到的第三方框架,了解其核心实现流程和框架特色与一些实现比较巧妙的细节。对于Java基础,推荐《深入理解Java虚拟机》《Effective Java》《Java并发编程之美》,Android推荐阅读《Android开发艺术探索》和《Android 源码设计模式解析与实战》,Android这两本都是点到为止,没有特别的深入,可以作为一个目录纲领,引子,借此做更深入的学习。除此之外对于之前所做过的项目,写在简历上的项目都要做深.

2020-05-26 22:23:57 581

原创 我是如何一步一步爬上 “64K限制” 的坑 | 经验贴

初衷分享这个填坑的记录,主要是感觉身边很多 Androider 都会遇到和我一样的场景。遇到一个 BUG ,优先按照自己经验修复 修复不了了,开始 Google(不要百度,再三强调),寻找一切和我们 BUG 相似的问题,然后看看有没有解决方案 尝试了很多解决方案,a 方案不行换 b 方案,b 方案不行换 c 方案... 知道没有方案可以尝试了,开始绝望... 如果影响不大,那就丢在项目里(估计也没人发现),如果影响很大,那只能寻找别人帮助,如果别人也给不了建议,那就原地 ????其实无论影响

2020-05-26 22:19:40 611

原创 Android Bitmap图片优化分析

图片在移动开发中占据中举足轻重的地位,早期的android 应用页面Ui相对简单,但随着Android系统不断的升级发展, 界面元素越来越丰富,用户对体验要求越来越高,UI小姐姐们需要设计出精致的界面元素,其中不乏很多好看的图片,但是随着手机性能提升(分辨率,cpu主频,内存等),图片质量也越来越大,拍个照动不动就3M,4M,8M, 大家都知道,android 应用在创建进程时候,会分配一个指定的内存大小,准确的说话是 google原生OS的默认值是16M,但是各个厂家的系统会对这个值进行修改,如果我们应用

2020-05-26 22:12:51 322

原创 腾讯--组件化如何实现,组件化与插件化的差别在哪里,该怎么选型

面试官: 组件化如何实现,组件化与插件化的差别在哪里,该怎么选型心理分析:面试官从架构层次 了解求职者是否用过 模块化 组件化 和插件化,在过去经验有没有运用过这些技术到项目中,这道题属于一个连环炮。求职者该格外小心**求职者:**应该从App开发的需求来定义技术选型,分别说说模块化,组件化 插件化的优势和区别一、组件化组件化,就是把APP拆分成不同功能模块,形成独立组件,让宿主调用。 组件化不一定是插件化,组件化是一个更大的概念:把模块解耦,组件之间代码不依赖,宿主可以依赖组件.

2020-05-25 17:47:14 547

原创 腾讯---谈一谈Binder的原理和实现一次拷贝的流程

面试官: 谈一谈Binder的原理和实现一次拷贝的流程心理分析:能问出该问题,面试官对binder的理解是非常深入的。想问求职者对Android底层有没有深入理解**求职者:**应该从linux进程通信原理的两次拷贝说起,然后引申为什么binder却只有一次拷贝 ,最后阐述内核空间 与用户空间的定义1 Linux 下传统的进程间通信原理了解 Linux IPC 相关的概念和原理有助于我们理解 Binder 通信原理。因此,在介绍 Binder 跨进程通信原理之前,我们先聊聊 Li.

2020-05-25 17:45:38 1013 2

原创 腾讯---Linux自带多种进程通信方式,为什么Android都没采用二偏偏使用Binder通信

面试官: Linux自带多种进程通信方式,为什么Android都没采用而偏偏使用Binder通信心理分析:面试官绝对不会现场让你分析binder的源码,源码又深又广,没有面试官会傻到让你分析binder所有的机制。他会问你为什么不采用linux。 从这个地方会看出你对binder有多深。这道题往往是面试Android高级的必考题。所以小伙伴们需要格外的注意**求职者:**应该从 linux自带的进程通信说起。然后各个击破 指出在Android这种特殊系统上的不足。最后引入binder...

2020-05-25 17:22:32 203

原创 腾讯---ButterKnife为什么执行效率为什么比其他注入框架高?它的原理是什么

面试官: ButterKnife为什么执行效率为什么比其他注入框架高?它的原理是什么心理分析: ButterKnife框架一直都是使用,很少又开发者对butterknife深入研究的,既然你是面试Android高级岗位,自然需要有相应被问到原理的准备,面试官想问你对注解处理器了解多少,Android编译流程有多少认识**求职者:**应该从 注解处理器原理 与优势说起,肯定注解处理器对解放生产力的作用。然后可以引申常见的 Butterknife,Dagger2,DBFlow。这才是加分项.

2020-05-24 22:03:05 214

原创 腾讯---synchronize关键字在虚拟机执行原理是什么,能谈一谈什么是内存可见性,锁升级吗

面试官: synchronize关键字在虚拟机执行原理是什么,能谈一谈什么是内存可见性,锁升级吗心理分析:面试官一定是想深入考你并发的内容,看你究竟有没有做过并发处理,大多数开发者在开发App时往往会忽略调并发处理 ,这道题会难住绝大多数人。**求职者:**应该存 锁的执行原理,锁优化 ,和java对象头说起锁的内存语义synchronized的底层是使用操作系统的mutex lock实现的。**内存可见性:**同步快的可见性是由“如果对一个变量执行lock操作,将会清空.

2020-05-24 21:51:33 240

原创 腾讯-谈谈volatile关键字与synchronized关键字在内存的区别

volatile关键字与synchronized关键字 作为Android开发者 我们总是傻傻的分不清。这一小节中,我们从腾讯面试中给大家讲解他们之间的作用和区别,在了解他们区别之前 我们得看看什么是线程安全性线程安全性:线程安全性包括两个方面,①可见性。②原子性。1、线程之间的通信:线程的通信是指线程之间以何种机制来交换信息。在命令式编程中,线程之间的通信机制有两种共享内存和消息传递。(1)在共享内存的并发模型里,线程之间共享程序的公共状态,线程之间通过写-读内存中的公共状.

2020-05-24 21:47:00 360

原创 腾讯-数据库版本如何单独升级,并且将原有数据迁移过去

在我们开发的应用中,一般都会涉及到数据库,使用数据的时候会涉及到数据库的升级、数据的迁移、增加行的字段等。比如,用户定制数据的保存,文件的端点续传信息的保存等都会涉及到数据库。​ 我们应用第一个版本是V1.0,在迭代版本V1.1 时,我们在数据库中增加了一个字段。因此V1.0的数据库在V1.1版本需要升级,V1.0版本升级到V1.1时原来数据库中的数据不能丢失,​ 那么在V1.1中就要有地方能够检测出来版本的差异,并且把V1.0软件的数据库升级到V1.1软件能够使用的数据库。也就是说,要在...

2020-05-24 21:41:40 347

原创 腾讯--增量升级为什么减少升级代价,增量升级原理

在前几年,整体移动网络环境相比现在差很多,加之流量费用又相对较高,因此每当我们发布新版本的时候,一些用户升级并不是很积极,这就造成了新版本的升级率并不高。而google为了解决了这个问题,提出了Smart App Update,即增量更新(也叫做差分升级)。尽管现在网络环境有了很大的提升,但一个不争的事实就是应用越做越大,因此,增量更新在目前的仍然是一种解决APP更新包过大的有效方案。今天,我们就来聊聊增量更新。什么是增量更新?增量更新的关键在于如何理解增量一词。来想想平时我们的开发过程,往.

2020-05-24 21:37:21 388

原创 腾讯-热修复连环炮(热修复是什么 有接触过tinker吗,tinker原理是什么)

热修复是什么答:热修复无疑是这2年较火的新技术,是作为安卓工程师必学的技能之一。在热修复出现之前,一个已经上线的app中如果出现了bug,即使是一个非常小的bug,不及时更新的话有可能存在风险,若要及时更新就得将app重新打包发布到应用市场后,让用户再一次下载,这样就大大降低了用户体验,当热修复出现之后,这样的问题就不再是问题了。目前较火的热修复方案大致分为两派,分别是:阿里系:spohix、andfix:从底层二进制入手(c语言)。 腾讯系:tinker:从java加载机制入手。

2020-05-24 21:25:50 512

原创 深入探索Android布局优化(下)

前言成为一名优秀的Android开发,需要一份完备的知识体系,在这里,让我们一起成长为自己所想的那样~。在上篇文章中,笔者带领大家学习了布局优化涉及到的绘制原理、优化工具、监测手段等等知识。如果对这块内容还不了解的建议先看看《深入探索Android布局优化(上)》。本篇,为深入探索Android布局优化的下篇。这篇文章包含的主要内容如下所示:6、布局优化常规方案 7、布局优化的进阶方案 8、布局优化的常见问题下面,笔者将与大家一起进入进行布局优化的实操环节。六、布局优化常规方案布局

2020-05-22 22:30:15 424

原创 深入探索Android布局优化(上)

前言成为一名优秀的Android开发,需要一份完备的知识体系,在这里,让我们一起成长为自己所想的那样~。Android的绘制优化其实可以分为两个部分,即布局(UI)优化和卡顿优化,而布局优化的核心问题就是要解决因布局渲染性能不佳而导致应用卡顿的问题,所以它可以认为是卡顿优化的一个子集。对于Android开发来说,写布局可以说是一个比较简单的工作,但是如果想将写的每一个布局的渲染性能提升到比较好的程度,要付出的努力是要远远超过写布局所付出的。由于布局优化这一主题包含的内容太多,因此,笔者将它分为了上、

2020-05-22 22:18:28 633

原创 使用 Navigation + Dynamic Feature Module 实现模块化

androidx navigation 2.3.0 加入了对 dynamic feature module 的导航支持,因此我们利用这个来分离出多个功能 module 来实现模块化国内基本不用的 dynamic feature moduleAndroid App Bundle 是官方 18 年推出的动态发布方案,类似国内各种插件化方案。不过它需要 Google Play Store 支持,这导致在国内无法使用借着 navigation 组件支持 dynamic feature module

2020-05-21 21:15:38 2180 1

原创 基于谷歌最新AAC架构打造的Android MVVM开发框架,使用该框架可以快速开发一个高质量、易维护的Android应用

AACHulk是以Google的ViewModel+DataBinding+LiveData+Lifecycles框架为基础, 结合Okhttp+Retrofit+BaseRecyclerViewAdapterHelper+SmartRefreshLayout+ARouter打造的一款快速开发框架, 开发语言是Kotlin,再结合AACHulkTemplate模版开发进行开发, 避免一些繁琐的操作,提供开发效率功能介绍1.支持多服务器地址、多成功码、各种超时时间、各种拦截器、Arouter等的配.

2020-05-21 20:58:02 541

原创 Android OOM分析

概述OOM(Out of Memory)即内存溢出,是因为应用所需要分配的内存超过系统对应用内存的阈值,而抛出的 java.lang.OutOfMemoryError错误。 OOM的根本原因是开发者对内存使用不当造成的。Android内存分配与回收机制Android系统仅会在新的内存分配之前判断Heap的尾端剩余空间是否足够,如果不够就会触发GC操作,从而腾出更多空闲的内存空间。内存分配Android的Heap空间是一个 GenerationalHeapMemory的模型,最近

2020-05-21 18:59:04 2397

原创 AOP埋点从入门到放弃

今天老大跑过来说项目埋点了解一下!丢下了这句话之后,就没有之后了!剩下我一个人在风中凌乱!!!其实这个需求老大在很久之前就说要开发了,后来就搁置了!但是今天看老大的态度,应该排到日程了!所以没办法只有硬着头皮磕了!免得过一阵子加班到很晚,所以趁着时间宽松,先能把踩的坑踩踩!!!分享给大家,也让大家能避免一些不必要的时间浪费。更好的过个周末,陪陪女盆友!!!特别声明:感谢JavaNoober提出的问题!问题是这样的?如果release的话,AspectJ失效怎么办?当时真的给我问.

2020-05-21 17:38:31 588

原创 Andorid性能优化之traceview的使用

一、traceview的使用方式有2种方式这2种方式可以根据场景,去选择哪一种方式。最终效果是一样的通过手动埋点 Profile1.1、通过手动埋点。步骤1: 比如我们知道在点击一个按钮的时候,会有卡顿,那么就可以用//可以用以下代码测试你的代码。//开始埋点,“app”是最后生成的性能分析文件Debug.startMethodTracing("App");//埋点结束,期间start 到 stop 之间的代码,就是你要测试的代码范围Debug.stopMethodTraci

2020-05-20 21:27:09 125

原创 使用 Jetpack Security 在 Android 上进行数据加密

您是否尝试过对应用中的数据进行加密?作为开发者,您想要保护数据安全,并确保数据掌握在其合理使用者的手中。但是,大多数 Android 开发者没有专门的安全团队来帮助他们正确地加密应用数据。就算通过网络来搜索如何加密数据,您得到的答案也可能已经过时好几年了,找到的示例也难以保证准确性。Jetpack Security (JetSec) 加密库为 Files 和 SharedPreferences 对象的加密操作提供了抽象支持。该库使用了安全且运用广泛的密码学原语 (cryptographic primit

2020-05-20 21:03:20 392

原创 月薪不同的三人去面试,面试官问道:各自谈谈对 binder 的理解?

面试官提了一个问题,我们来看看 、 和 ️ 三位同学的表现如何吧自认为无所不知,水平已达应用开发天花板,目前月薪 10k面试官️:谈谈你对 binder 的理解A:binder 是用来跨进程通信的,可以分为 client、server、binder 驱动以及 service manager 四部分。面试官:一次拷贝原理知道吗?A:不太清楚,其实对应用开发来说,没必要知道的。面试官:好的,回去等通知吧938页面试宝典PDF。更多面试内容,面试专题,flutter视频 .

2020-05-19 21:20:01 328

原创 花费2年,字数超一万最佳总结教你Android多进程,微信微博都在用

目录前言 为什么要使用多进程? 为什么需要“跨进程通讯”? 跨进程通讯的方式有哪些? 使用AIDL实现一个多进程消息推送 实现思路 例子具体实现 知其然,知其所以然。 跨进程的回调接口 DeathRecipient 权限验证 根据不同进程,做不同的初始化工作 总结 结语为什么要使用多进程对于进程的概念,来到这里的都是编程修仙之人,就不再啰嗦了,相信大家倒着、跳着、躺着、各种姿势都能背出来。 相信很多同学在实际开发中,基本都不会去给app划分进程,而且,在Android中

2020-05-19 21:15:31 187

原创 阿里面试官问我:如何加载100M的图片却不撑爆内存?你会咋答?

还记得当年面试一个面试官问我怎么加载巨图才能不撑爆内存,我没回答上来,他说分片显示,我寻思特么分片能减少内存使用??现在可以打他脸了!内容扩展1.图片的三级缓存中,图片加载到内存中,如果内存快爆了,会发生什么?怎么处理?2.内存中如果加载一张 500*500 的 png 高清图片.应该是占用多少的内存?3.Bitmap 如何处理大图,如一张 30M 的大图,如何预防 OOM?938页面试宝典PDF。更多面试内容,面试专题,flutter视频 全套,音视频从0到高手开发。私信我【666】免费获取.

2020-05-18 21:43:46 386

原创 Android开发之脚本替换PackageName

1 前言平时如果想要替换包名一般是在AS中右键Rename进行操作。但是如果遇到一份代码希望导出几种不同的包名(不是ApplicationId),并且代码还会持续更新,这时候就需要使用脚本在打包时自动导出成不同包名的apk。有的人会说直接可以在build.gradle里面的productFlavors里面设置,然后用placeHolder填充包名就行啦。 注意,这时候就要区分ApplicationId和PackageName了。ApplicationId,是在手机中标识唯一应用的id。(看起来就

2020-05-18 21:39:40 640

原创 终极组件化框架项目方案详解

前言本文所讲的组件化案例是基于自己开源的组件化框架项目github上地址github.com/HelloChenJi…其中即时通讯(Chat)模块是单独的项目github上地址github.com/HelloChenJi…1.什么是组件化?项目发展到一定阶段时,随着需求的增加以及频繁地变更,项目会越来越大,代码变得越来越臃肿,耦合会越来越多,开发效率也会降低,这个时候我们就需要对旧项目进行重构即模块的拆分,官方的说法就是组件化。2.为什么需要组件化和组件化带来的好处?1、 现在An

2020-05-18 21:34:04 342

原创 Android性能优化:APK瘦身方式大汇总

大家都知道开发中应用程序的性能是非常重要的,将直接影响用户的体验,但是性能优化是个老生常谈的问题,我们需要慢慢来,本篇文章将从如何减少APK的大小开始,来提升Android App的性能,这里只是列举了一些方式方法,读者可根据自身应用需要对自己的APK进行相应处理。用户经常会避免下载看起来太大的应用程序,尤其是在设备连接到2G和3G网络或付费网络的应用市场内部。这篇文章讲述如何减少您的应用程序APK的大小,以便使更多的用户下载您的应用程序。理解APK文件结构在讨论如何降低您的应用程序的大小之.

2020-05-18 21:18:37 563

转载 滴滴DoKit Android核心原理揭秘之函数耗时

技术背景在日常的开发过程中,App的性能和用户体验一直是我们关注的重点,尤其是对于大公司来说每天的日活都是千万或者上亿的量级。操作过程中的不流畅和卡顿将严重影响用户的体验,甚至可能面临卸载导致用户流失。在拉新成本居高不下的现阶段,每一个用户的流失对于我们来说都是直接的损失。所以想要留住用户就必须提升用户体验,那么流畅顺滑操作过程无卡顿就是我们最基本也是重要的一环。但是随着现在移动端App的业务功能越来越复杂,随之带来的代码量剧增。在几十万行的代码中难免会出现效率低下或者不符合开发规范的代码存在,传统的代

2020-05-17 22:16:51 338

原创 不要等到面试官问道线程、多线程和线程池,还在头疼啦! 唉!速看这篇

小编今天为大家带来了关于17道线程、多线程和线程池面试专题,对于这些东西,我花费一个月时间整理了一份983页的完整PDF核心知识点笔记,话不多说往下看↓↓↓;我不休息我还能学 ⊂(‘ω’⊂ )))Σ≡=─༄༅༄༅༄༅༄༅༄༅线程、多线程和线程池面试专题需要这一份983页的完整PDF核心知识点笔记的小伙伴。可以私信我【666】免费获取这份完整的核心知识点笔记。1、开启线程的三种方式?1)继承Thread类,重写run()方法,在run()方法体中编写要完成的任务 new Thread(.

2020-05-17 21:53:54 178

原创 Android性能优化 | 帧动画OOM?优化帧动画之SurfaceView逐帧解析

Android 提供了AnimationDrawable用于实现帧动画。在动画开始之前,所有帧的图片都被解析并占用内存,一旦动画较复杂帧数较多,在低配置手机上容易发生 OOM。即使不发生 OOM,也会对内存造成不小的压力。下面代码展示了一个帧数为4的帧动画:原生帧动画AnimationDrawable drawable = new AnimationDrawable();drawable.addFrame(getDrawable(R.drawable.frame1), frameDuration

2020-05-15 21:33:46 1241 1

转载 HashMap原理解析

HashMap 是我们使用频率最高的集合之一。它是用于映射(键值对)处理的数据类型。随着 JDK 版本的更新,JDK1.8 对 HashMap 底层的实现进行了优化,例如引入红黑树的数据结构。本文将深入探讨 HashMap 的结构实现和功能原理。基本特点HashMap 你应该也很熟悉。我在这就简单说一下它的基本特点,HashMap是基于哈希表的 Map 接口的实现。 允许 null 键和 null 值,最多只允许一条记录的键为 null,允许多条记录的值为 null。 不保证映射的顺序。

2020-05-15 21:11:15 184

转载 如何做到在子线程更新 UI?

一般来讲,子线程是不能更新 UI 的,如果在子线程更新 UI,会报错。但在某种情况下直接开启线程更新 UI 是不会报错的。比如,在 onCreate 方法中,直接开启子线程更新 UI,这样是不会报错的。override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) textView

2020-05-15 20:57:58 769 1

原创 Android 11 第二个开发者预览版发布,目前支持 Pixel 2/3/3a/4 系列刷机

今天,谷歌发布了Android 11的第二个开发者预览版。和此前发布的第一个预览版相同,该预览版也仅适用于开发人员,需要手动下载,目前支持Pixel 2/3/3a/4系列刷机。Android 11的第二个开发者预览版并没有引入任何突破性的新功能,很大程度上是首个预览版的维护升级版本。对此,谷歌研发副总裁 Dave Burke 表示:“它仍然是早期版本,但是您可以开始了解操作系统如何在此版本中实现新体验,从无缝5G连接到围绕着屏幕改进UI,再到更智能的键盘和更快的消息传递体验。”下面我们来看一下究竟有

2020-05-14 21:53:52 805

c++ 面试题库.pdf

一、C 和C++的特点与区别? 参考答案: 答:(1) C语言特点: 1)作为- 种面向过程的结构化语言,易于调试和维护; 2)表现能力和处理能力极强,可以直接访问内存的物理地址; 3)C语言实现了对硬件的编程操作,也适合于应用软件的开发; 4) C语言还具有效率高,可移植性强等特点。 (2) C++语言特点: 1) 在C语言的基础上进行扩充和完善,使C+t兼容了C语言的面向过程特点,又成为了一种面向对象的程序设计语言; 2)可以使用抽象数据类型进行基于对象的编程; 3)可以使用多继承、多态进行面向对象的编程; 4)可以担负起以模版为特征的泛型化编程。

2020-03-21

空空如也

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

TA关注的人

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