自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Android 开发架构

热爱技术,热爱分享,加油,孤独的编程人

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

原创 不使用synchronized和lock,如何实现一个线程安全的单例?

单例,大家肯定都不陌生,这是Java中很重要的一个设计模式。稍微了解一点单例的朋友也都知道实现单例是要考虑并发问题的,一般情况下,我们都会使用synchronized来保证线程安全。那么,如果有这样一道面试题:不使用synchronized和lock,如何实现一个线程安全的单例?你该如何回答?C类应聘者:可以使用饿汉模式实现单例。如:public class Singleton { ...

2020-02-28 16:30:17 196

原创 漫画:聊聊线程池中,线程的增长/回收策略

一、序public static ExecutorService newThreadPool() { return new ThreadPoolExecutor( 30, 60, 60L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>());}我们今天就来借这个问题,聊聊线程池中...

2020-02-27 16:02:37 326 1

原创 Jetpack 系列组件:ViewModel 从相遇到相知

什么是ViewModel一句话概括ViewModel可以简单理解为带有生命周期的数据对象。一般会和Livedata,dataBinding 等其他组件进行组合使用。逻辑处理,数据获取和存储不要放到ViewModel类,它仅仅作为UI数据的保存(暴露获取数据的方法),数据存储和获取可以创建Repository类ViewModel的优势页面配置更改数据不丢失当设备因配置更改(横竖屏旋转,...

2020-02-24 17:31:00 338

原创 我把废旧 Android 手机改造成了 Linux 服务器

目录瞎比比什么都别说,先看看效果怎样?需要什么材料、设备?root 手机为 Android 手机装上 Linux 系统最后瞎比比自从没有了学生身份之后,购买云服务器的价格是越来越贵了,不管是阿里云还是腾讯云。我寻思着能不能找到什么替代品,这让我想起之前在知乎不经意看到的,可以把 Android 手机改造成 Linux。先看看效果怎么样三个必备的软件...

2020-02-24 16:21:02 3252 1

原创 职场修炼场:2019年裸辞的人,现在都在做什么

无意间看到知乎一个讨论,主要是在说去年那些裸辞的人,当下的状态情况,借着这个话题,今天想跟大家讲一些关于裸辞的建议。话题中的裸辞,题主是这么说的:总结下来就是:1 现实与预期落差2 陷入职场斗争3 人员流动性大4 压力剧增这里有没有发现有趣的事情,这些问题估计刚进入职场的人,都会存在的。对于我来说,刚进职场人员流动性没有很大,但也有一部分人在寻找下家。职场斗争,在刚工作的那几年,...

2020-02-21 23:33:38 416

原创 ViewStub你肯定听过,但是这些细节了解吗?

1什么是ViewStub1. ViewStub 是一个看不见的,没有大小,不占布局位置的 View,可以用来懒加载布局。2. 当 ViewStub 变得可见或 inflate() 的时候,布局就会被加载(替换 ViewStub)。因此,ViewStub 一直存在于视图层次结构中直到调用了 setVisibility(int) 或 inflate()。3. 在 ViewStub 加载...

2020-02-21 23:25:31 425

原创 2020 年需要关注的 5 大 Android 开发技术

虽然编程环境每天都有新变化,但 Android 无疑是其中更新迭代最频繁的,每年甚至每个月都有新东西。本文介绍了 2020 年开发者最需要关注的 5 大 Android 开发技术。在众多 Android 开发团队参加的 Droidcon London 2019 大会上,一系列新技术令人眼花缭乱。从 Joe Birch 介绍的无障碍智能吉他 [1] 到即将到来的 Jetpack Compose...

2020-02-21 23:18:27 1054

原创 Android 锁屏无法继续定位问题

产生问题的原因:手机锁屏后,Android系统为了省电以及减少CPU消耗,在一段时间后会将手机进入休眠状态。此时的服务以及线程等都会停止。最近就这个问题,阅读了很多代码以及官方文档,下面就说下最近都尝试过的方式,可能其中有些您实现了,我这边没实现,望见谅。本文采用的高德定位。一、PowerManager.WakeLock(1)直接强制当前页面cpu运行<uses-permissio...

2020-02-21 00:27:34 4251 2

原创 你好, View Binding! 再次再见, findViewById!

作为一个 Android 开发者, 你一定听说过 findViewById. 这个方法可以根据 ID 去匹配对应的 View. 实现了类似功能或者增强了其功能的还有:Butter Knife(Kotter Knife)Kotlin Android ExtensionsData BindingView Binding为什么不是 findViewById/Butter Knife(Kott...

2020-02-20 23:46:08 629

原创 真当Flutter不能热更新?QQ团队开源动态化Flutter

基于JS的高性能Flutter动态化框架可能是目前放出来的相对最完整的Flutter动态化方案跨平台新明星Flutter推出后,我们团队也尝试引入 Flutter ,做为iOS开发,马上感受到,Flutter 虽然强大,但不能像RN一样动态化是阻碍我们使用她的唯一障碍了。看Google团队对动态化的计划,短期内应该不会上线,所以自己动手,启动了这个技术探索项目。简介项目代号:MXFlutt...

2020-02-20 23:32:38 407

原创 CopyOnWriteArrayList 你了解多少?

相信大家对 ConcurrentHashMap 这个线程安全类非常熟悉,但是如果我想在多线程环境下使用 ArrayList,该怎么处理呢?阿粉今天来给你揭晓答案!一、摘要在介绍 CopyOnWriteArrayList 之前,我们一起先来看看如下方法执行结果,代码内容如下:public static void main(String[] args) { List<String&...

2020-02-19 19:54:00 253

原创 Android Studio 3.3.2 正式版的安装

第二步:下载 android-studio-ide-182.5314842-windows.exe,随便下到什么位置都可以。第三步:双击运行点  next下面是修改后的图慢慢等吧,让他进度条跑完。右下角的进步条跑完后,对于有的机子有可能会出错, 并且出错的情况是大多数。那是因为你的SDK没有下载好,或工程的配置没有做好。  如果有出错(报红),...

2020-02-19 19:50:19 826

原创 Android 黑科技保活实现原理揭秘

以下文章来源于虚拟框架 ,作者维术一直以来,App 进程保活都是各大厂商,特别是头部应用开发商永恒的追求。毕竟App 进程死了,就什么也干不了了;一旦 App 进程死亡,那就再也无法在用户的手机上开展任何业务,所有的商业模型在用户侧都没有立足之地了。早期的 Android 系统不完善,导致 App 侧有很多空子可以钻,因此它们有着有着各种各样的姿势进行保活。譬如说在 Android 5...

2020-02-19 19:46:14 597

原创 面试官:“看你简历上写熟悉 Handler 机制,那聊聊 IdleHandler 吧?”

原文:承香墨影一. 序Handler 机制算是 Android 基本功,面试常客。但现在面试,多数已经不会直接让你讲讲 Handler 的机制,Looper 是如何循环的,MessageQueue 是如何管理 Message 等,而是基于场景去提问,看看你对 Handler 机制的掌握是否扎实。本文就来聊聊 Handler 中的 IdleHandler,这个我们比较少用的功能。它能干什么...

2020-02-18 23:54:51 366

原创 Dart语言快速入门

/ 入门简单的Dart程序 /// 定义一个函数printNumber(int number){ print('The number is $number.'); // 打印到控制台。}// 入口函数void main(){ var number = 42;// 声明并初始化一个变量。 printNumber(number);// 调用函数。}...

2020-02-18 23:46:01 430

原创 Flutter 实现 App 内更新安装包

背景目前flutter发展火热,生态越来越繁荣,但相比于原生开发,仍非常稚嫩,使用起来坑很多,最近做需求——app内完成安装包的更新,完成该功能踩了很多的坑,现在记录一下实现过程。实现过程获取当前app的版本、平台信息 static String _version; static String _flatform;import 'package:package_info/pack...

2020-02-17 22:39:22 2404 1

原创 近 50 种花式 “Hello, World”

当我们学习一门编程语言时,都是从“Hello, World!”开始。所有程序员在其职业生涯中,都至少接触过一个经典的“Hello, World!” 程序。通常程序员会使用多种编程语言,多的甚至实现了十几种。还有一种称为TTHW(Time to “Hello, World!”)的方法,来衡量程序员创建一个新的“Hello, World!”程序的时间。你可以用多少种不同的语言编写一个“Hello,...

2020-02-17 22:30:07 263 1

原创 ItemTouchHelper 实现交互动画

01.拖拽需要实现功能需要实现拖拽的功能如下所示长按item后拖动,与其他item交换位置按住item右面的图标后拖动,与其他item交换位置左滑item变透明并缩小,超出屏幕后,其他item补上右滑item变透明并缩小,超出屏幕后,其他item补上02.几个重要的方法说明几个重要的方法说明需要自定义类实现ItemTouchHelper.Callback类,并重写其中几个方...

2020-02-15 23:29:05 440

原创 给你Android实现的九宫格抽奖程序

效果展示实现步骤1.生成抽奖矩形其中每个矩形的宽高相同,长度为整个控件宽度的1/3。**代码展示:public class NineLuckPan extends View { private Paint mPaint; private ArrayList<RectF> mRects;//存储矩形的集合 private float mStrokWi...

2020-02-14 21:10:18 906 1

原创 京东把 Elasticsearch 用的真牛逼!

正文京东到家订单中心系统业务中,无论是外部商家的订单生产,或是内部上下游系统的依赖,订单查询的调用量都非常大,造成了订单数据读多写少的情况。我们把订单数据存储在MySQL中,但显然只通过DB来支撑大量的查询是不可取的。同时对于一些复杂的查询,MySQL支持得不够友好,所以订单中心系统使用了Elasticsearch来承载订单查询的主要压力。在这分享一份整理了2个月的Android进阶面试解...

2020-02-14 20:55:42 250

原创 你知道App为什么会Crash吗?

1概述目录前言每一个Android开发同学在项目开发过程中肯定都遇到过各式各样的Crash问题,大家都非常不希望程序发生Crash。那么问题来了,你真的了解Crash吗?在这分享一份整理了2个月的Android进阶面试解析笔记文档,包括了知识点笔记和高频面试问题解析及部分知识点视频讲解给大家!为了不影响阅读,在这以图片展示部分内容于目录截图,有需要的朋友麻烦点赞后点击下面在线链接获取...

2020-02-13 19:19:31 661

原创 为了KPI,对APK进行极限优化!

##   背景目前Android安装包的优化方法论比较成熟,比如混淆代码(Proguard、AndResGuard)移除不在使用的代码和资源对于音频、图片等使用更轻量的格式等等。这些方法都比较常规,在项目成熟后优化的空间也比较有限。以应用宝为例,目前(2020年1月)项目代码中Java文件8040个,代码行数约143万行,最终生成的 release包 9.33M...

2020-02-13 19:03:20 666

原创 被开发者抛弃的 Executors,错在哪儿?

一. 序在 Java 领域内,我们使用多线程的方式来实现并发编程。而线程本身是操作系统的一个概念,虽然不同的语言对线程都进行了一些封装,但是最终都是调用到操作系统中去创建和调度线程。既然线程是一项重要的系统资源,为了更合理的利用此资源,我们会使用池化技术来优化线程的创建和销毁,这就是线程池。在我们学习并发编程的时候,线程可以利用 Thread 来创建并通过 start()来启动一个...

2020-02-12 19:07:07 274

原创 将 20M 文件从 30 秒压缩到 1 秒,我是如何做到的?

压缩20M文件从30秒到1秒的优化过程有一个需求需要将前端传过来的10张照片,然后后端进行处理以后压缩成一个压缩包通过网络流传输出去。之前没有接触过用Java压缩文件的,所以就直接上网找了一个例子改了一下用了,改完以后也能使用,但是随着前端所传图片的大小越来越大的时候,耗费的时间也在急剧增加,最后测了一下压缩20M的文件竟然需要30秒的时间。压缩文件的代码如下。这里找了一张2M大小的图片,并...

2020-02-12 19:00:19 154

原创 LayoutManager高端玩家,实现花式表格

本文的项目也是学习自定义LayoutManager绝佳资料。1前言表格是自打我进公司以后就使用的控件,起初使用的是ScrollablePanel,从一开始的被花式吊打,到后期的熟练使用。https://github.com/Kelin-Hong/ScrollablePanel大佬写的控件确实给我的工作带来了极大的方便,不过还是有些问题存在:无法实现不规则的表格其核心是二层Re...

2020-02-11 21:33:49 404

原创 【闲来无事】仿知乎广告Banner的切换功能

开头看到知乎中,文章下侧会跟着一个广告banner,上下滑动文章时会根据方向,进行扇形的切换。闲来无事就写个玩玩,本人菜鸡,初步想的就是两层ImageView重叠,对上层的IV进行裁剪操作,遂,直接开撸(demo功能演示,代码可能不漂亮还请见谅)。布局布局大致样式ScrollView content view framelayout/relativelayout均...

2020-02-10 22:06:14 284

原创 利用Kotlin和协程,网络请求竟然还能这样写?

技术栈为了拥抱Kotlin,OkHttp已经将OkHttp全部用Kotlin重写。同时OkHttp的老朋友retrofit也拥抱了Coroutines推出了retrofit2.60。DSL方式的语法特性or代码样式在各个开源库中也露脸越来越多。比如刚刚官宣停止维护的Anko和如日中天的Flutter。关于DSL的更多介绍本文最后将给出学习链接。DSL的书写风格在灵活配置请求和处理请求上给人耳目...

2020-02-10 17:15:45 516

空空如也

空空如也

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

TA关注的人

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