4 SEU_Calvin

尚未进行身份认证

一只沉溺于移动互联网浪潮中的小白 ╮(╯▽╰)╭

等级
TA的排名 1k+

Android开发——Crash捕获SDK是如何捕获Application中onCreate的崩溃信息的

1. 前言众所周知,很多第三方SDK是在Application中的onCreate()中去初始化的,形如:@Overridepublic void onCreate() { super.onCreate(); //... ThirdPartySDK.init(this);}那么为什么一些crash捕获SDK是如何更靠前的进行初始化,从而捕获Applicat...

2019-10-25 16:49:02

Android开发——Android7.0的适配注意点小结

首先大致说一下Android7.0特性改动的地方:(1)应用间共享文件限制;(2)对部分广播的后台限制、网络数据节省开关等;(3)多窗口的支持;(4)通知栏支持直接回复消息等。针对Android7.0的适配总结如下:1. 应用间共享文件限制1.1 问题描述在Android7.0系统上,Android 框架强制执行了 StrictMode API 政策禁止向应用外公开 f...

2018-09-05 11:08:26

Android开发——架构组件LiveData源码解析

近期的业务代码中使用到了LiveData,研究了一下发现很好用,因此总结整理出了此篇学习笔记。希望各位多批评指正。1. LiveData概述简单地来说,LiveData就是一个持有数据的类。LiveData中的数据可以被观察者订阅,当数据被修改时通知观察者。观察者包括Fragment、Activity以及Service等。 LiveData能够感知观察者的生命周期。只有在观察者处...

2018-08-31 15:11:02

Android开发——WebView轻量缓存优化

0. 前言产品被用户投诉 APP 流量消耗厉害:[2017-08-08 07:34:40] 严选 APP 流量消耗太大啦,每次启动都更新,下面流量很大。建议优化流量的消耗,可以对加载画质进行选择。想比淘宝 APP,消耗流量可是大多了。[2017-06-01 21:43:36] 怎么没用有流量节约模式,一会用了我 200M。[2017-06-12 08:32:25] 严选 app 太费流量了。于是乎

2017-11-28 12:56:20

Android开发——ListView的复用机制源码解析

0. 前言  前段时间找工作,看了很多人的面经,不得不说找个工作很麻烦。尤其是Android,岗位的数量比不上前端后Java后台也就算了,问的东西又多又杂,这里就不多列举了,其中有一个印象比较深的问题是关于ListView复用机制的。复用机制谁都会用,但是却不一定能真正讲清楚。因此才有了此文。 1.   ListView的继承关系和Adapter的由来ListView直接继承自的AbsListVi

2017-10-24 18:28:16

Android开发——插件化技术中的关键技术浅析

0.  前言在Android开发中,插件化就是让我们的应用可以把一些功能和逻辑单独抽出来放在插件apk中,然后主apk做到按需调用,这样的好处是一来可以减少主apk的体积,二来可以做到热插拔,在不发布新版本的情况下实现更新某些模块,更加动态化。网上有很多插件化的解决方案和框架,但是它们都必须解决几个基础问题:插件类的加载,插件资源的加载和插件Activity的管理。1.  插件类的加载public

2017-09-08 21:05:51

Android开发——增量更新实战中遇到的问题

0.   前言之前一篇 Android开发——增量更新实战总结介绍了增量更新的具体实现步骤,但是其中有一些坑还是需要注意一下的,这里对遇到的一些坑做一个总结,希望以后遇到这些坑的同学少走弯路。1.  Windows下的编译错误  在上一篇的3.2我们导入源码的过程中,其中为了防止Windows下的编译错误,放入了empty.c空文件,具体错误当时忘记截图了,反正如果你用的Windows平台做,直接

2017-08-29 18:09:58

Android开发——增量更新实战总结

0.   前言增量更新的原理还是比较简单的,但是真的实现起来遇到的坑简直让人吐血,我是在windows下实现的,各种各样的坑,各种各样的错误,折腾了整整两天多才完成了,因此记录下来。先介绍下什么是增量更新和为什么我们需要增量更新,当我们发布新版本的时候,一些用户升级并不是很积极,反正我个人是不太喜欢更新手机上的APP,不知道大家是什么样的习惯

2017-08-29 18:09:31

Android开发——微信Android架构历史

微信Android诞生之初,用的是常见的分层结构设计。这种架构简单、清晰并一直沿袭至今。这是微信架构的v1.x时代。图1-架构演进到了微信架构的v2.x时代,随着业务的快速发展,消息通知不及时和Android 2.3版本之前webview内存泄露问题开始突显。由于代码、内存、apk大小都在增长,对系统资源的占用越来越多,导致微信进程容易被系统回收。因此微信开始转向多进程架构,独立的通信进程保持长连

2017-08-13 20:31:54

Android开发——如何理解晦涩的Binder机制

0. 前言Android中Binder机制的重要性不言而喻,从IPC角度来看, Binder是一种跨进程通信方式,Binder也可以理解为一种虚拟的物理设备,它的设备驱动是/dev/binder;从Android framework角度来说,Binder是Service Manager连接各种Manager和相应ManagerService的桥梁;从Android应用层来说,Binde...

2017-08-10 09:45:17

设计模式——装饰模式详解

装饰模式动态地给一个对象添加一些额外的功能,相对于继承的方式,更加灵活。装饰模式经常被误认为是代理模式。装饰模式是以对客户透明的方式扩展对象的功能,是继承关系的一个替代方案。而代理模式则是给一个对象提供一个代理对象,并由代理对象来控制原有对象的引用。前者重在增加功能,后者重在对代理对象施加控制,不是对对象本身功能的增强。

2017-08-07 14:53:01

Android开发——Protocol Buffer效率之高的原理介绍

0.前言最近的项目里有用到Protocol Buffer,Protocol Buffer是Google公司开发的一种数据描述语言,类似于XML,是一种结构化数据的数据存储格式,可用于数据传输量较大的即时网络通信IM等场景。之所以使用它,是因为PB将信息序列化为二进制的格式,体积缩小了3倍,序列化速度比Json快了20-100倍,也必然会减少网络传输所需的时间。这么强大的的PB,当然要深入理解一下它

2017-07-30 14:22:43

Android开发——贝塞尔曲线解析

相信很多同学都知道“贝塞尔曲线”这个词,我们在很多地方都能经常看到。利用“贝塞尔曲线”可以做出很多好看的UI效果,本篇博客就让我们一起学习“贝塞尔曲线”。贝塞尔曲线的原理贝塞尔曲线是用一系列点来控制曲线状态的,这些点简单分为两类:类型作用数据点确定曲线的起始和结束位置控制点确定曲线的弯曲程度一阶贝塞尔曲线 一阶曲线是没有控制点的,仅有两个数据点(A 和 B)

2017-07-26 16:13:36

Android开发——简述RxJava框架的实现原理

0.前言看此篇之前最好知道RxJava的使用,关于框架的使用推荐这篇文章,由于RxJava内部实现有点复杂,既然用拆轮子的方式来分析源码比较难啃,不如换种方式,以造轮子的方式,将源码中与性能、兼容性、扩展性有关的代码剔除,留下核心代码带大家揭秘RxJava的实现原理(本文不涉及框架的使用介绍)。 1.观察者Subsribler在RxJava里面是一

2017-07-20 17:30:53

Android开发——使用ActivityLifecycleCallbacks监控App是否处于后台

0.前言项目中经常会遇到判断App是否工作在后台的情景,除了判断runningTasks这种方法,其实有一种更加优雅的方法,就是使用ActivityLifecycleCallbacks。 1.ActivityLifecycleCallbacksActivityLifecycleCallbacks其实是一个接口,如下所示:看方法名字就很清晰的知道,它定义了App内所有的Activity从创建到销毁的回调方法

2017-07-12 21:12:08

Android开发——今日头条APK瘦身之路

随着版本迭代,功能增加安装包体积也会慢慢增大。今日头条576版本APK达到了25M,通过一系列的优化,到目前的607版本为12M。本文主要是介绍头条APK瘦身中用到的一些方法。APK分析既然是要优化APK的大小,那首先就得看下APK文件的构成。Android Studio在2.2版本添加 APK Analyzer功能,可以直接打开apk文件,如下图所示 APK文件主要有如下几部分组成:

2017-07-07 20:02:24

Java技术——ReentrantLock的Condition的作用以及使用

0. 前言 之前知道ReentrantLock类有一个newCondition(),用于获取Lock上的一个条件,还可以多次newCondition()获得多个条件,Condition可用于线程间通信。是对比ReentrantLock和Synchronized关键字的区别时学习到的。但是有次面试被问到有没有用到过ReentrantLock的Condition,瞬间懵逼了。所以搜集了些资...

2017-06-30 22:21:46

Android开发——Android系统启动以及App启动过程

0. 前言  从Android手机打开开关,到我们可以使用其中的app时,这个启动过程到底是怎么样的? 1.  系统上电当给Android系统上电,在电源接通的瞬间,CPU内的寄存器和各引脚均会被置为初始状态,CPU复位之后,程序指针会指向启动地址,从该地址读取并直接运行启动程序的可执行代码,或者将可执行代码与数据载入CPU内置的RAM中再运行。这一段代码,放在PC中,叫做BIOS,而在Andro

2017-06-19 16:26:11

设计模式——适配器模式详解

适配器模式把一个类的接口变换成客户端所期待的另一个接口,从而使原本因接口不兼容而无法一起工作的两个类能一起工作。适配器模式的使用场景:(1)系统需要使用现有的类,而此类的接口不符合需要。(2)需要一个统一的输出接口,而输入类型不可预知(如Android中的Adapter)。(3)创建一个可以复用的类(如Android中的Adapter),使得该类可以与其他不相关的类或不可预见的类

2017-06-18 21:54:28

Android开发——Protocol Buffer的使用(比XML、Json快很多)

0.前言最近的项目里有用到Protocol Buffer,Protocol Buffer是Google公司开发的一种数据描述语言,类似于XML,是一种结构化数据的数据存储格式,可用于数据传输量较大的即时网络通信IM等场景。之所以使用它,说明它是有不可替代的优势,这里借用CarSon的一张图来说明:Protocol Buffer主要的优势在于三点:(1)体积小速度快。像XML这种报文是基于文本格式的

2017-06-11 18:06:38

查看更多

CSDN身份
  • 博客专家
勋章 我的勋章
  • 签到新秀
    签到新秀
    累计签到获取,不积跬步,无以至千里,继续坚持!
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。