Android Framework
文章平均质量分 96
Mlib
这个作者很懒,什么都没留下…
展开
-
【Android】Dialog异常CalledFromWrongThreadException深入分析
问题在使用Dialog时,因为线程问题,在调用dismiss方法时出现了CalledFromWrongThreadException的Crash,如下:android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch it原创 2017-10-27 09:40:21 · 2959 阅读 · 1 评论 -
【Android】Doze模式识别与检测
从 Android 6.0(API 级别 23)开始,Android 引入了两个省电功能:Doze模式(官方翻译为低电耗模式)和 App Standby模式(官方翻译为应用待机模式),可通过管理应用在设备未连接至电源时的行为方式为用户延长电池寿命。Doze模式通过在设备长时间处于闲置状态时推迟应用的后台 CPU 和网络 Activity 来减少电池消耗。App Standby模式可推迟用户近期未与...原创 2019-05-27 10:33:56 · 2260 阅读 · 0 评论 -
【Android】动态链接库so的加载原理
前言最近开发的组件时常出现了运行时加载so库失败问题,每天都会有java.lang.UnsatisfiedLinkError的错误爆出来,而且线上总是偶然复现,很疑惑。所以本文将从AOSP源码简单跟踪Android中的动态链接库so的加载原理,试图找出一丝线索。加载入口首先我们知道在Android(Java)中加载一个动态链接库非常简单。就是我们日常调用的 System.load(...原创 2018-07-04 14:51:46 · 5639 阅读 · 0 评论 -
【Android】OkHttp源码分析
Android为我们提供了两种HTTP交互的方式:HttpURLConnection 和 Apache HttpClient,虽然两者都支持HTTPS,流的上传和下载,配置超时,IPv6和连接池,已足够满足我们各种HTTP请求的需求。但更高效的使用HTTP 可以让您的应用运行更快、更节省流量。而OkHttp库就是为此而生。在开始分析OkHttp之前我们先了解一下 HttpURLConnection原创 2018-01-26 19:02:36 · 1007 阅读 · 0 评论 -
【Android】源码分析 - LRUCache缓存实现原理
一、Android中的缓存策略一般来说,缓存策略主要包含缓存的添加、获取和删除这三类操作。如何添加和获取缓存这个比较好理解,那么为什么还要删除缓存呢?这是因为不管是内存缓存还是硬盘缓存,它们的缓存大小都是有限的。当缓存满了之后,再想其添加缓存,这个时候就需要删除一些旧的缓存并添加新的缓存。因此LRU(Least Recently Used)缓存算法便应运而生,LRU是近期最少使用的算法,它原创 2018-01-13 11:20:29 · 4458 阅读 · 0 评论 -
【Android】源码分析 - View事件分发机制
事件分发对象(1)所有 Touch 事件都被封装成了 MotionEvent 对象,包括 Touch 的位置、时间、历史记录以及第几个手指(多指触摸)等。(2)事件类型分为 ACTION_DOWN, ACTION_UP,ACTION_MOVE,ACTION_POINTER_DOWN,ACTION_POINTER_UP, ACTION_CANCEL,每个事件都是以 ACTION_DOWN 开始 ACT原创 2017-12-26 19:27:57 · 577 阅读 · 0 评论 -
【Android】源码分析 - Activity启动流程
启动Activity的方式Activity有2种启动的方式,一种是在Launcher界面点击应用的图标、另一种是在应用中通过Intent进行跳转。我们主要介绍与后者相关的启动流程。Intent intent = new Intent(this, TestActivity.class);startActivity(intent);从Activity入手@Overridepublic void st原创 2017-12-23 19:07:28 · 893 阅读 · 0 评论 -
【Android】阅读Android源码的一些姿势
本文转载自 阅读Android源码的一些姿势 — by Kaede日常开发中怎么阅读源码找到正确的源码IDE是日常经常用的东西,Eclipse就不说了,直接从Android Studio(基于IntelliJ Community版本改造)开始。我们平时的Android项目,都是要依赖Android SDK里对应API Level的android.jar包(而且是以Provided的形式依赖),这转载 2017-01-04 13:54:11 · 980 阅读 · 0 评论 -
【Android】源码分析 - Handler消息机制再梳理
前言多线程的消息传递处理,从初学Android时的Handler,懵懵懂懂地照猫画虎,到后来一头雾水的疑惑它为什么这么复杂,再到熟悉之后的叹为观止,一步步地都是自己踩过的足迹,都是成长啊哈哈哈。虽然离出神入化的境界还远十万八千里呢,但Android中的Handler多线程消息传递机制,的确是研发技术学习中不可多得的一个宝藏。本来我以为自己之前的学习以及比较了解 Handler,在印象中 Androi原创 2017-08-04 14:09:54 · 1771 阅读 · 1 评论 -
【Android】源码分析 - IntentService机制
前言提到Android的多线程机制,除了我们常用的Thread来实现异步任务之外,还有AsyncTask:封装了线程池和Handler,主要为了子线程更新UI;HandlerThread:一个已经拥有了Looper的线程类,内部可以直接使用Handler;IntentService:一个内部采用HandlerThread来执行任务的Service服务,任务执行完毕后会自动退出;今天我们来根据原创 2017-10-05 16:17:42 · 654 阅读 · 0 评论 -
【Android】源码分析 - AsyncTask异步任务机制
前言提到Android的多线程机制,常用的有如下几种方式:AsyncTask: 封装了线程池和Handler,为 UI 线程与工作线程之间进行快速切换提供一种便捷机制。适用于当下立即需要启动,但是异步执行的生命周期短暂的使用场景。HandlerThread: 一个已经拥有了Looper的线程类,内部可以直接使用Handler。为某些回调方法或者等待某些任务的执行设置一个专属的线程,并提供线程任务原创 2017-10-10 14:16:56 · 549 阅读 · 0 评论 -
【Android】ADB工具原理探究
ADB简介Android Debug Bridge (adb) 是一个Android的命令行工具。可以用来连接模拟器或实际的移动设备。比如 adb logcat, adb shell。Dalvik Debug Monitor Server(DDMS) 后台也是运行的adb来实现监控调试移动设备。总体而言,adb有两个用途:监控连接设备 :adb会监控所有已经连接设备(包括模拟器),譬如设...原创 2019-06-08 17:26:49 · 2527 阅读 · 0 评论