Android葵花宝典我爱编程Android开发

Android深入浅出

2018-01-04  本文已影响97人  5fc9b6410f4f

Handler 源码注释翻译

让你无缝了解 Handler~


Android:这是一份很详细的 Socket 使用攻略


所有关于 Android Socket 的使用都在这里了


由Message,Handler,MessageQueue和Looper引发的思考?


解答Message,Handler,MessageQueue和Looper引发的App启动流程,多线程的思考


GitHub 上的一堆 Python 学习资料


GitHub 上的一堆 Python 学习资料


【Android View源码分析(一)】setContentView加载视图机制深度分析


文章有深度,图文搭配,清晰明了


Android LowMemoryKiller 原理分析


Android 的设计理念之一,便是应用程序退出, 但进程还会继续存在系统以便再次启动时提高响应时间. 这样的设计会带来一个问题, 每个进程都有自己独立的内存地址空间,随着应用打开数量的增多, 系统已使用的内存越来越大,就很有可能导致系统内存不足, 那么需要一个能管理所有进程,根据一定策略来释放进程的策略,这便有了 lmk,全称为 LowMemoryKiller(低内存杀手),lmkd 来决定什么时间杀掉什么进程.

Android 基于 Linux 的系统,其实 Linux 有类似的内存管理策略——OOM killer,全称 (Out Of Memory Killer), OOM 的策略更多的是用于分配内存不足时触发,将得分最高的进程杀掉。而 lmk 则会每隔一段时间检查一次,当系统剩余可用内存较低时,便会触发杀进程的策略,根据不同的剩余内存档位来来选择杀不同优先级的进程,而不是等到 OOM 时再来杀进程,真正 OOM 时系统可能已经处于异常状态,系统更希望的是未雨绸缪,在内存很低时来杀掉一些优先级较低的进程来保障后续操作的顺利进行。


套用生产线模型的Hander、Looper、Message、MessageQueue


从职责入手分析Hander、Looper、Message、MessageQueue源码


Android 源码解析之 AppCompatActivity.setContentView


网上也有很多关于 setContentView 的源码解析,但是都是基于 Activity 源码,而我们现在都是继承的 AppCompatActivity, 看源码发现改动还不少,所以我打算来研究下 AppCompatActivity 里是如何把我们的布局添加进去的。


Android Material 之CoordinatorLayout、AppBarLayout、CollapsingToolbarLayout、Toolbar 等的说明和使用


android design 包下的控件使用和说明,CoordinatorLayout、AppBarLayout、CollapsingToolbarLayout、Toolbar、NestedScrollView、RecyclerView、FloatingActionButton 等,附 demo 源码。


聊聊 Java 内部类


聊聊 Java 内部类


深入理解 MessageQueue


Android 中有两个非常重要的知识点,分别是 Binder 机制和 Handler 机制。前者用于跨进程通讯,并且通过 ServiceManager 给上层应用提供了大量的服务,而后者用于进程内部通讯,以消息队列的形式驱动应用的运行。之前的文章已经多次分析了 Binder 相关的内容,复杂程度远高于 Handler,之后还会继续分析 Binder。说到 Handler,做安卓开发的一定都不会陌生,一般用于切换线程。其涉及到的类还有 Looper,MessageQueue,Message 等。其中 MessageQueue 是事件驱动的基础,本文会重点分析 MessageQueue,其他内容会简单带过,可以参考生产者 - 消费者模式。


Android监测用户行为之中AOP编程之AspectJ实战


文章背景 最近在给某某银行做项目的时,涉及到了数据埋点,性能监控等问题,那我们起先想到的有两种方案: 方案之一就是借助第三方,比如友盟、Bugly等,由于项目是部署在银行的网络框架之内的,所以该方案不可行。 另外一种方案是就是给每一个方法里面数据打点,然后写入SD卡,定时上报给自…


Android探索之旅 | AIDL原理和实例讲解


-- 作者 谢恩铭 转载请注明出处 前言 为使应用程序之间能够彼此通信,Android提供了IPC (Inter Process Communication,进程间通信)的一种独特实现: AIDL (Android Interface Definition Language, …


[Android 从头再来] App 启动过程


App 启动过程


Java 新特性与 Kotlin 之间的比较


最近一直在写 React Native 相关的东西,担心会淡忘 Java 的东西,所以买了本 JDK8 闲来瞅瞅,没想到却被其中的新特性深深的吸引,幸好没有放弃,抓紧时间拿出来和大家探讨探讨。


Android Binder 机制原理(史上最强理解,没有之一)


Binder 是 Android 系统进程间通信(IPC)方式之一。Linux 已经拥有的进程间通信 IPC 手段包括 (Internet Process Connection): 管道(Pipe)、信号(Signal)和跟踪(Trace)、插口(Socket)、报文队列(Message)、共享内存(Share Memory)和信号量(Semaphore)。本文详细介绍 Binder 作为 Android 主要 IPC 方式的优势。


ButterKnife 从入门到精通 - 源码级分析(二)


上篇文章说到,ButterKnife 是如何通过 bind() 方法来实现绑定试图、设置监听的。这一节给大家继续说说 ButterKnife 是如何生成 ViewBinding 的。 APT 类似于 ButterKnife 这种注入框架以前也有很多的,像 xutils、afinal,包括 Dagge…


简单明了的分析Android触摸事件,看完再也不纠结了


通过最简单的例子,分析Android触摸事件流程,做到过目不忘


Android-- 异步消息处理机制(Handler、Looper、Message、MessageQueue)


这篇文章主要是总结 Handler、Looper、Message、MessageQueue 的知识点,自己总结出来,做一分享,希望大家多多支持!


【Android 设计模式系列】卖热干面的启发 ---Builder 模式


一般来说, Builder 常常作为实际产品的静态内部类来实现 (提高内聚性).
故而 Product,Director, Builder 常常是在一个类文件中, 例如本例中的 HotDryNoodlesWithBuilder.java.
这里为了更好的对应 Builder 模式的类图关系, 将 HotDryNoodlesWithBuilder 画了两个~.


Android 开发,跳不过的内存管理


版权声明: 本账号发布文章均来自公众号,承香墨影(cxmyDev),版权归承香墨影所有。 未经允许,不得转载。 一、前言 在 Android 系统中,当运行的 App 被移动到后台的之后,Android 为了保证下次启动的速度,会将它移入 Cached 的状态,这个时候实际上,…


Android 进程间通信


要讲 Android 进程通信的话,就不得不先讲讲 Service. Service 是 Android 的四大组件之一,它主要的作用是后台执行操作,Activity 属于带有 UI 界面跟用户进行交互,而 Service 则没有 UI 界面,所有的操作都是基于后台运行完成。并…


Android Service和IntentService知识点详细总结


Service 对于广大的Android开发者来说算是耳熟能详了,作为Android的四大组件之一,在我们的开发中也起着重要的作用,在Android面试中,Service相关的问题也是面试官问得比较多的,当别人问你,Service 到底是什么的时候?你可能随口就能答得上来,Se…


Android内存优化——内存泄露检测分析方法


上一篇文章总结了一些常见的内存泄露场景及优化方案,这篇文章继续总结内存泄露的一些常用的检测和分析方法。 Lint代码检查 AndroidStudio自动Lint代码检查工具,一些常见的代码警告Lint工具都会给我们提示。使用也比较简单: Analyze —> Inspect C…


Android 进程间通信 AIDL详解


最近项目有进程间通信的需求,我使用的是IPC通信的方式,这是Android中很传统的一种进程间通信的方式,在这里分享给大家。 进程间通信意义 我们为什么要使用进程间通信。我说一个场景,比如我们有两个App,其中一个App(名字为A),有授权登陆,我们还有一个App(名字为B)可…


Android进程保活-自“裁”或者耍流氓


本篇文章是后台杀死系列的最后一篇,主要探讨一下进程的保活,Android本身设计的时候是非常善良的,它希望进程在不可见或者其他一些场景下APP要懂得主动释放,可是Android低估了”贪婪“,尤其是很多国产APP,只希望索取来提高自己的性能,不管其他APP或者系统的死活,导致了…


简单理解 Binder 机制的原理


Android 系统中,涉及到多进程间的通信底层都是依赖于 Binder IPC 机制。例如当进程 A 中的 Activity 要向进程 B 中的 Service 通信,这便需要依赖于 Binder IPC。不仅于此,整个 Android 系统架构中,大量采用了 Binder 机制作为 IPC(进程间通信)方案。


性能优化——内存泄漏(1)入门篇


内存泄漏系列文章: 性能优化——内存泄漏(1)入门篇 性能优化——内存泄漏(2)工具分析篇 性能优化——内存泄漏(3)代码分析篇 一、简述 本篇是作为内存泄漏入门,主要说的是一些关于内存泄漏的概念,包括什么是内存泄漏,内存分配的几种策略,为什么会造成内存泄漏 及 如何避免内存泄…


2017 上半年我整理的好文章(上)(98 篇)


分类整理的分享好文章


LruCache 源码剖析


原文发表于:http://blog.csdn.net/qq_27485935 , 大家没事可以去逛逛 (ง •̀_•́)ง 前言 有一定经验的开发者都知道这个类, 大多数情况 LruCache 类都被用在图片缓存这一块, 而其中使用了一个听起来高大上的算法 —— “近期最少使用…


[贝聊科技]使用Android Studio和MAT进行内存泄漏分析


1.Java内存分配策略Java 程序运行时的内存分配策略有三种:静态分配、栈式分配和堆式分配。对应的存储区域如下:静态存储区(方法区):主要存放静态数据、全局 static 数据和常量。这块内存在程序编译时就已经分配好,并且在程序整个运行期间都存在。栈区 :方法体内的局部变量都…


深入理解 Java 内存模型 (JMM) 及 volatile 关键字


本篇主要结合博主个人对 Java 内存模型的理解以及相关书籍内容的分析作为前提,对 JMM 进行较为全面的分析,本篇的写作思路是先阐明 Java 内存区域划分、硬件内存架构、Java 多线程的实现原理与 Java 内存模型的具体关系,在弄明白它们间的关系后,进一步分析 Java 内存模型作用以及一些必要的实现手段,以下是本篇主要内容


活儿好又不纠缠的 IntentService


版权声明: 本账号发布文章均来自公众号,承香墨影(cxmyDev),版权归承香墨影所有。 未经允许,不得转载。 一、前言 Service 是 Android 四大组件之一,正常来说,我们直接使用 Service 就可以了。 但是 Service 存在几个问题: 默认不会运行在单…


Android系统启动流程(一)解析init进程


相关文章Android系统架构与系统源码目录 前言 作为“Android框架层”这个大系列中的第一个系列,我们首先要了解的是Android系统启动流程,在这个流程中会涉及到很多重要的知识点,这个系列我们就来一一讲解它们,这一篇我们就来学习init进程。 1.init简介 ini…


分析为什么有时在非UI线程更新UI会崩溃


很多初学者肯定有这样一个经验,在Activity的一个子线程中更新UI,发现会报错。很多人知道这个错误,但却不知道是什么原因引起的。今天我们来分析一下是什么原因引起的。我今天以textview更新ui为例。首先看代码 <?xml version="1.0" encoding="…


Android 项目最新架构


为了帮助开发者打造一款优秀的APP,Google可谓费尽心力,推出了各种诸如MVP,MVVM等等项目架构的思路,帮助开发者更加高效的开发,尽管这样,Google还是接着推出了一个新的项目架构,以便给予开发者更多的选择,至于这种架构思路和MVP等框架的优劣,各位看完文章或许自有定…


Android 事件分发机制源码攻略(一)


Android 事件分发机制的源码攻略


Android AOP 实践笔记


本文同步自wing的地方酒馆 最近博客更新越来越慢了,有两方面原因: 1.没啥好写的。2.应该沉下心好好沉淀自己,积累一些东西,博客写的太频繁有”刷博客“之嫌,还容易浮躁。浮躁是大忌 ,所以还是沉下心好好学吧。 网上已经有了很多类似的文章,这里再写一次是为了自己当做笔记,主要是…


Material Design 之 Toolbar 开发实践总结


Material Design 之 Toolbar 开发实践总结


Android性能优化(十)之App瘦身攻略


1、 前言 如果你对App优化比较敏感,那么Apk安装包的大小就一定不会忽视。关于瘦身的原因,大概有以下几个方面: 对于用户来说,在功能差别不大的前提下,更小的Apk大小意味更少的流量消耗,也意味着更多的用户下载; 对于产品来说,大于竞品的Apk意味着较低的下载基数,不利于验证…


深入理解 Java 之 JVM 堆内存分配


Java 堆是被所有线程共享的一块内存区域,所有对象和数组都在堆上进行内存分配。为了进行高效的垃圾回收,虚拟机把堆内存划分成新生代、老年代和永久代(1.8 中无永久代,使用 metaspace 实现)三块区域。

上一篇下一篇

猜你喜欢

热点阅读