自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(13)
  • 收藏
  • 关注

原创 2020 年,我这样在项目中使用 MVVM

最近看到了几篇与 Jetpack MVVM 有关到文章,使我不禁也想淌一下这场混水。我是在 2017 年下半年接触的 Jetpack 的那套开发工具,并且后来一直将其作为开发的主要框架。在这段时间的使用过程中,我踩过一些坑,也积累了一些经验,为了将其推广到其它到项目中又专门封装出了一个库。当然,Jetpack 所提供的组件已经比较完善,我的工作只能算是锦上添花。下面我就介绍下,现在我是如何在项目中使用 Jetpack MVVM 的。1、后起之秀和黯然失色的 MVPMVP 非常强大,也是或者曾经是很多大公

2021-08-27 14:56:17 339

原创 3分钟带你看懂android的Binder机制

一.引言最近一段时间由于工作,接触到framework部分比较多一点,也难免要和Binder打一些交道,也整理了一些相关知识,但准备写这篇文章时,还是有些慌。而且关于整个Binder机制的复杂程度不是三言两语能描叙清楚的,也害怕自己的理解有些偏差,误导一些朋友(ps:反正也没人看…扎心)所以也参考了很多资料。本文主要站在Android开发的角度来大致解析下Binder在java层的一些知识原理,给大家脑子形成一个完整的概念,比如AIDL的实现原理,Binder是怎么通信的等等,文章文字较多,请耐心观看

2021-08-26 22:15:27 595

原创 【奇技淫巧】新的图片加载库?基于Kotlin协程的图片加载库——Coil

新的图片加载库——CoilCoil 是 Instacart 团队研发的新的的图片加载库,它使用了很多高级功能,例如协程,Okhttp,androidx.lifecycle。Coil 还包括一些高级功能,例如图像采样,有效的内存使用以及请求的自动取消/暂停默认情况下 Coil 与 R8 完全兼容,开箱即用,不需要添加额外的规则。如果使用 Proguard ,您可能需要为 Coroutines, OkHttp 和 Okio 添加规则Coil 的优势快速:Coil 进行了很多优化,包括内存和磁盘缓存,对

2021-08-26 17:29:00 1230

原创 【背上Jetpack之ViewModel】即使您不使用MVVM也要了解ViewModel ——ViewModel 的职能边界

前言Android 开发时,我们使用 activity 和 fragment 作为视图控制器, 可能还会使用有一些类可以存储和提供 UI 数据(例如MVP中的 Presenter )但是 当配置更改时(如旋转屏幕),activity 会重建,但对于 UI 数据的持有者呢?开发者需要重新保存相关的信息并传递给重建的 activity ,否则开发者必须再次获取数据(通过网络请求或本地数据库)由于 UI 数据的持有者的生命周期可能比 activity 长,因此开发者还需要避免出现内存泄漏的问题如

2021-08-26 14:42:50 265

原创 【Android 音视频开发打怪升级:音视频硬解码篇】二、音视频硬解码流程:封装基础解码框架

本文你可以了解到本文主要简介Android使用硬解码API实现硬解码的流程,包含MediaCodec输入输出缓冲、MediaCodec解码流程、解码代码封装和讲解。一、简介MediaCodec 是Android 4.1(api 16)版本引入的编解码接口,同时支持音视频的编码和解码。一定要好好理解接下来这两幅图,因为后续的代码就是基于这两幅图来编写的。数据流首先,来看看MediaCodec的数据流,也是官方Api文档中的,很多文章都会引用。仔细看一下,MediaCodec将数据分为两

2021-08-25 20:53:55 458

原创 【 Flutter 绘制指南 】那个男人带着小册来了

1. 想说在前面的话很多人在逻辑控制力不强的时候就去强攻数据结构和算法,然后被虐到怀疑人生。如果几个 for 循环,几个 while 循环,一个递归就能把你绕晕;如果看代码超过 100 行就受不了了 ;如果经常脑子说会,但是手说不行。那么少年,还是多敲些代码,补一补逻辑的控制能力吧,先把刀磨好再去砍树。逻辑控制是基础中的基础,在急于求成,轮子满地的当下,这确是最容易被忽略的。要实现一个功能,只需要找库,调用方法就完事了。宇宙能量是守恒的,只要走了捷径,自然要付出代价。太过于依赖三方库,我们失去了

2021-08-24 21:05:00 264

原创 Android 内核控制流完整性

Android 内核控制流完整性由 Android 安全研究工程师 Sami Tolvanen 发布Android 的安全模型由 Linux 内核强制执行,这将诱使攻击者将其视为攻击目标。我们在已发布的 Android 版本和 Android 9 上为加强内核投入了大量精力,我们将继续这项工作,通过将关注点放在基于编译器的安全缓解措施上以防止代码重用攻击。Google 的 Pixel 3 将是第一款在内核中实施 LLVM 前端控制流完整性(CFI)的设备,我们已经实现了 Android 内核版本 4.

2021-08-24 15:51:05 1169

原创 [实战]用flutter编写炸弹人小游戏同时支持web和移动端

用flutter编写炸弹人小游戏同时支持web和移动端flutter_BananaMon是我学习dart/flutter的时候开发的一个练手项目,他不依赖第三方游戏框架,是一个从零开始的项目,现在已经开源在github。简介google主导的Dart对标微软主导的TypeScript,但是在web端一直屈居下风,Google能否借助flutter这款框架咸鱼翻身?总体来讲flutter是一个设计用于app开发的跨平台ui框架,它用dart在android和iOS端实现了对底层图形库进行了封装,并不像.

2021-08-24 14:06:13 556

原创 屏幕上内容究竟是怎样画出来的 —— Android View 工作原理详解

在开始之前,回顾一下上一篇文章中分析的从 ActivityThread 到 Activity 过程的时序图:步骤一:初始化 PhoneWindow 和 WindowManager如上图所示,在 Activity 的 onCreate()、onStart() 和 onResume() 等生命周期被调用之前,它的 attach() 方法将会先被调用,因此,我们将 attach() 方法作为这篇文章主线的开头:final void attach(Context context, ActivityThrea

2021-07-01 20:46:07 234 2

原创 探索 Android 多线程优化方法

前言1. 基本介绍在我学习 Android 多线程优化方法的过程中,发现我对多线程优化的了解太片面。写这篇文章的目的是完善我对 Android 多线程优化方法的认识,分享这篇文章的目的是希望大家也能从这些知识从得到一些启发。这篇文章分为下面三部分。第一部分第一部分讲的是多线程优化的基础知识,包括线程的介绍和线程调度基本原理的介绍。第二部分第二部分讲的是多线程优化需要预防的一些问题,包括线程安全问题的介绍和实现线程安全的办法。第三部分第三部分讲的是多线程优化可以使用的一些方..

2021-07-01 15:37:14 598

原创 Android 模拟器:Project Marble 中的改进

这是 Android Studio 团队一系列博客文章中第三篇,深入探讨了 Project Marble 中的细节和幕后情况。本文是由模拟器团队的 Sam Lin(产品经理),Lingfeng Yang(技术主管)和 Bo Hu(技术主管)撰写的。今天我们很高兴地向您介绍我们在 Project Marble 期间在 Android 模拟器上取得的最新进展。我们的核心目标之一是使 Android 模拟器成为应用程序开发的必选设备。物理 Android 设备非常棒,但我们的目标是增加功能和性能,使您在开发和测

2021-07-01 14:05:45 140

原创 “Android开发3年老板嫌我工资高,把我辞了…”

近期一名Vivo员工一直在苦恼一件事情,起因是自己误打误撞的考上了老家湖北某地级市的公务员,年薪10w。目前工作在深圳,日常9106,年薪35w,29岁大龄无女友,询问网友自己该不该回去当公务员?本以为热评都是帮忙参考意见的,没想到居然很多都是感慨他是怎么考上的,某位小米员工吐槽道:每天上班到晚上10点也能误打误撞考上,你也真是厉害啊。他也是十分淡定的回答到:挤时间。这可依我看,就可能就是天才吧,天天加班还能有时间复习去考公务员,居然还考上了。这脑瓜子肯定是秃的光光的,聪明的脑袋不长毛嘛

2021-06-22 19:38:47 177 1

原创 _Flutter入门与实战(三):构建一个常用的页面框架

一.Android中高级面试题1、Activity生命周期?onCreate() -> onStart() -> onResume() -> onPause() -> onStop() -> onDetroy()2、Service生命周期?service 启动方式有两种,一种是通过startService()方式进行启动,另一种是通过bindService()方式进行启动。不同的启动方式他们的生命周期是不一样.通过startService()这种方式启动的servic

2021-06-22 17:20:57 471

空空如也

空空如也

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

TA关注的人

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