
android
文章平均质量分 85
秃头披风侠_
这个作者很懒,什么都没留下…
展开
-
阿里P7岗也必会的知识点:synchronized底层实现与锁升级过程
在Java中,synchronized关键字是用来控制线程同步的。就是在多线程的环境下,控制synchronized代码段不被多个线程同时执行。那么synchronized具体是怎么做到线程同步的呢?还有锁升级过程的过程是怎样的的?我们来探讨一下。synchronized实现细节1.1 Java代码实现我们先来了看下如果多线程间竞争共享资源,不采取措施会出现什么情况:public class TestSync implements Runnable { private int coun.原创 2021-10-13 15:49:02 · 293 阅读 · 0 评论 -
彻底理解ReentrantLock
1. ReentrantLock的介绍ReentrantLock重入锁,是实现Lock接口的一个类,也是在实际编程中使用频率很高的一个锁,支持重入性,表示能够对共享资源能够重复加锁,即当前线程获取该锁再次获取不会被阻塞。在java关键字synchronized隐式支持重入性(关于synchronized可以看这篇文章),synchronized通过获取自增,释放自减的方式实现重入。与此同时,ReentrantLock还支持公平锁和非公平锁两种方式。那么,要想完完全全的弄懂ReentrantLock的话.原创 2021-10-12 16:57:37 · 300 阅读 · 0 评论 -
面试常问的设计模式之单例模式,深入理解单例模式
前言初遇设计模式在上个寒假,当时把每个设计模式过了一遍,对设计模式有了一个最初级的了解。这个学期借了几本设计模式的书籍看,听了老师的设计模式课,对设计模式算是有个更进一步的认识。后面可能会不定期更新一下自己对于设计模式的理解。每个设计模式看似很简单,实则想要在一个完整的系统中应用还是非常非常难的。然后我的水品也非常非常有限,代码量也不是很多,只能通过阅读书籍、思考别人的编码经验以及结合自己的编码过程中遇到的问题来总结。怎么用->怎么用才好->怎么与其他模式结合使用,我想这是每个开发人员都.原创 2021-10-12 16:34:46 · 347 阅读 · 0 评论 -
P7岗必备基础知识点,Android移动开发WebView常见的问题和解决方案
WebView常见的一些坑1、内存泄漏由于WebView是依附于Activity的,Activity的生命周期和WebView启动的线程的生命周期是不一致的,这会导致WebView一直持有对这个Activity的引用而无法释放,解决方案如下三种:(1)独立进程,简单暴力,不过可能涉及到进程间通信。使webview产生了oom崩溃等问题也不会影响到主程序。方法:在androidmanifest.xml的activity标签里加上android:process="packagename.web"就可.原创 2021-10-11 21:26:26 · 446 阅读 · 0 评论 -
阿里面试回顾:Java四大引用是什么,它们的区别是什么?
我们都知道 JVM 垃圾回收中,GC判断堆中的对象实例或数据是不是垃圾的方法有引用计数法和可达性算法两种。无论是通过引用计数算法判断对象的引用数量,还是通过根搜索算法判断对象的引用链是否可达,判定对象是否存活都与“引用”有关。引用先说说引用,Java中的引用,类似 C 语言中的指针。初学 Java时,我们就知道 Java 数据类型分两大类,基本类型和引用类型。基本类型:编程语言中内置的最小粒度的数据类型。它包括四大类八种类型:4种整数类型:byte、short、int、long2种浮点数类原创 2021-10-11 16:21:29 · 190 阅读 · 0 评论 -
kotlin中data class 与object实现单例原理讲解
data class 与 object 关键字原理讲解我们日常开发中肯定离不开javaBean类的,一般来讲,都需要定义里面属性,并且有可能还需要实现hashCode和equals函数。比如下面这个例子。class Human { private String name; private int age; private int sex; public String getName() { return name; } public v原创 2021-10-09 19:50:38 · 962 阅读 · 0 评论 -
Hash冲突的四大解决办法,Hashmap如何解决hash碰撞问题?
1.链地址法这种方法的基本思想是将所有哈希地址为i的元素构成一个称为同义词链的单链表,并将单链表的头指针存在哈希表的第i个单元中,因而查找、插入和删除主要在同义词链中进行。链地址法适用于经常进行插入和删除的情况。2.再哈希法就是同时构造多个不同的哈希函数:Hi = RHi(key) i= 1,2,3 … k;当H1 = RH1(key) 发生冲突时,再用H2 = RH2(key) 进行计算,直到冲突不再产生,这种方法不易产生聚集,但是增加了计算时间。3.建立公共溢出区将哈希表分为公共表.原创 2021-10-09 16:53:05 · 2925 阅读 · 0 评论 -
面试必会的知识点:Kotlin 线程同步的 N 种方法,学会了才能不慌
面试的时候经常会被问及多线程同步的问题,例如:“ 现有 Task1、Task2 等多个并行任务,如何等待全部执行完成后,执行 Task3。”在 Kotlin 中我们有多种实现方式,本文将所有这些方式做了整理,建议收藏。Thread.joinSynchronizedReentrantLockBlockingQueueCountDownLatchCyclicBarrierCASFutureCompletableFutureRxjavaCoroutineFlow我们先定义三个T原创 2021-10-08 15:07:27 · 460 阅读 · 0 评论 -
全面总结Android面试知识点,学会大厂面试题,为金九银十跳槽保驾护航
Android中大厂面试都很重视基础知识的考察,面试前不仅要熟悉这些知识点,也要适当去背诵,保证面对面试官时能从容清晰地表述出来。强烈推荐《Android开发艺术探索》,校招社招都对我很有帮助;《Java并发编程实战》帮助理解多线程安全;《深入理解Java虚拟机》帮助理解JVM。理解了以下问题后,最好要用笔手写下来,帮助你组织语言,加深印象,帮助复习。常规面试题Android面试题ListView 如何缓存的?RecyclerView联系人列表如何实现A-Z快速定位广播和EventBus的区别原创 2021-10-06 21:54:49 · 187 阅读 · 0 评论 -
分析Binder线程池的启动流程
BinderBinder它是android中的一种进程间通信机制,它主要采用的是CS架构模式。Binder框架中主要涉及到4个角色Client、Server、Service Manager及Binder驱动,其中Client、Server、Service Manager运行在用户空间,Binder驱动运行在内核空间。线程池线程池它是一种用于多线程处理形式,处理过程中将任务添加到队列,然后在创建线程后自动启动这些任务。线程池线程都是后台线程。每个线程都使用默认的堆栈大小,以默认的优先级运行,并处于多.原创 2021-10-06 20:21:33 · 250 阅读 · 0 评论 -
Android整理需要翻译的strings资源,需要把没翻译的中文整理出来翻译成俄文?
问题描述项目需要做俄语国际化,历史代码里有的字段有俄语翻译、有的没有,需要把没翻译的中文整理出来翻译成俄文。大概思路列出所有res目录,根据是否包含values-ru分成两组(半自动在“不包含”分组里把需要翻译的中文文件复制出来(半自动)在“包含”组里把需要补充翻译的字段复制出来(纯手动)把复制出来需要翻译的xml文件转换成excel用于翻译(自动)把翻译好的文件根据转换成xml,根据之前记录的res目录放到项目里(半自动)代码列出所有string.xml文件路径public sta原创 2021-10-06 16:12:56 · 297 阅读 · 0 评论 -
面试都会问的Android开发之设计模式,聊聊设计模式6大原则
单一职责对于一个类来说,应该只有一个原因引起它的变化,也就是他所承担的职责应该单一化,不应该承担不同的责任。一个类承担的职责越多说明耦合性越高,越不容易被复用。比如我们常用的用户管理类,里面包含了登录,登出等行为。而在登录登出行为中,一个要将用户信息写入到缓存,一个要从缓存中清楚用户信息。那么根据单一职责,显然这里写入以及读取缓存具体的方法实现是不该属于此类的,UserManager类只关心登录登出即可,缓存要交给另外的类实现。代码类似如下:public class UserManager {原创 2021-09-30 20:16:25 · 182 阅读 · 0 评论 -
如何学习kotlin?Kotlin基础知识快速入门
一 概述Android 1.5系统中Google 引入了NDK功能,支持使用C和C++语言来进行一些本地化开发。17年官宣kotlin为安卓一级开发语言;所以对于安卓开发者,学习kotlin是必须的,这是java最好的第三方库(富语法糖java)。kotlin将代码编译成同样规格的class文件让Java虚拟机识别,它继承了Java的全部财富,和Java100%兼容的,可以直接调用使用Java编写的代码,也可以无缝使用Java第三方的开源库;Kotlin的类型推断也在Java 8 中被推出,Lamb原创 2021-09-30 17:31:22 · 1382 阅读 · 0 评论 -
鸿蒙开发的圆角该怎么做?没有glide,也只需三分钟
前言看过鸿蒙2.0系统的发布会,大家是不是蠢蠢欲动,想要开发第一个鸿蒙的程序呢,网上有很多文章介绍鸿蒙系统、跟Android的区别以及怎么写HelloWorld的文章,这边就不复制粘贴了。今天换个花样,来看下如何实现Android里面一些常见功能与效果,因为鸿蒙刚出来不久,一切都还不是很成熟(没有前辈的神器),只能靠自己手x代码,废话不多说,来看下鸿蒙系统里如何实现基本的图片圆角功能吧。如今大部分美术在设计样式的时候,都会给图片带上圆角,在鸿蒙开发过程中,一定会遇到要对图片进行二次处理,添加上圆角、原创 2021-09-30 15:50:46 · 758 阅读 · 0 评论 -
没有网络(开飞行模式)也提示下载成功?Flutter cached_network_image 图片加载流程分析
前言为什么没有网络(开飞行模式)也弹Toast提示下载成功?下意识反应,肯定是Toast提示弹早了,刚点击按钮,还没开始下载就弹了Toast,赶紧拿手机过来操作验证一波。确实没有网络,弹了下载完成提示,去相册检查一下,嗯?图片下载成功了,还有这种操作?赶紧检查一下代码,发现项目中使用的cached_network_image三方库加载的图片,从名字上可以判断,这是一个缓存网络图片的加载框架。所以应该是图片显示出来以后就被缓存到本地了,实际下载的流程并未走网络请求,为了验证想法,看了下框架加载图片流程,原创 2021-09-29 21:56:36 · 735 阅读 · 0 评论 -
Android 面试总结,那些很可能会被问倒的问题,你都了解吗
Android启动启动模式standard 标准模式singleTop 栈顶复用模式 (例如:推送点击消息界面)singleTask 栈内复用模式 (例如:首页)singleInstance 单例模式 (单独位于一个任务栈中,例如:拨打电话界面)App启动流程在Android 层 第一步就是 fork Zygote 进程(1. 创建服务端Socket,为后续创建进程通信做准备 2. 加载虚拟机 3.fork了System Server进程,负责启动和管理Java Framework层转载 2021-09-29 16:57:01 · 254 阅读 · 1 评论 -
Android刘海屏如何适配?一份详细的Android刘海屏、水滴屏全面屏适配方案
市面上的屏幕尺寸和全面屏方案五花八门。上述两种屏幕都可以统称为刘海屏,不过对于右侧较小的刘海,业界一般称为水滴屏或美人尖。为便于说明,后文提到的「刘海屏」「刘海区」都同时指代上图两种屏幕。当我们在谈屏幕适配时,我们在谈什么1.适应更长的屏幕2.防止内容被刘海遮挡其中第一点是所有应用都需要适配的,对应下文的声明最大长宽比而第二点,如果应用本身不需要全屏显示或使用沉浸式状态栏,是不需要适配的。针对需要适配第二点的应用,需要获取刘海的位置和宽高,然后将显示内容避开即可。声明最大长宽比以前的普通转载 2021-09-29 14:48:22 · 2586 阅读 · 0 评论 -
超详细!如何高效学习Android动画?这是一份详细 & 清晰的学习指南
如何高效学习Android动画?当然要有一份指南才能高效学习啦,这就是一份详细并且清晰的学习指南,请拿好收藏哦!前言动画的使用 是 Android 开发中常用的知识可是动画的种类繁多、使用复杂,每当需要 采用自定义动画 实现 复杂的动画效果时,很多开发者就显得束手无策本文将献上一份Android动画的全面介绍攻略,包括动画的种类、使用、原理等,能让你更好地掌握动画 从而实现更加复杂的动画效果目录动画类型Android动画分为两大类:视图动画 & 属性动画,具体如下:其中,视图转载 2021-09-28 20:26:18 · 265 阅读 · 0 评论