Android
文章平均质量分 93
verymrq
这个作者很懒,什么都没留下…
展开
-
Android多线程--线程锁总结
最近准备将自己的学习笔记记录下来,养成写博客的习惯,一下内容是根据书上和网上资料整合而成,同时也有一部分自己的理解。一、synchronize同步锁(内置锁) 为了防止多线程同时操作同一个位置,可以上锁的有对象和class。public class synchronizedDemo{//同步方法public synchronized void method{//doSomething}原创 2016-12-10 20:43:59 · 1518 阅读 · 0 评论 -
【Android源码系列】如何解析APK-PackageManagerService
一、惯例BB新的一年又到了,2018也要加油啊~距离写上一篇文章也有一个月了,今天我们就来看看PackageManagerService(以下简称PMS)。 PMS和AMS、WMS一样,也是一个系统服务,他的主要作用就是解析APK信息,并保存下来。我们平时写在Manifest里的信息是如何被解析的呢?没错都是他干的。还记得我在前面一篇文章《 VirtualAPK插件化方案原理探索》里留下了一个坑:原创 2018-01-04 11:18:01 · 807 阅读 · 0 评论 -
【Android源码系列】界面的呈现-WindowManagerService
一、前言作为Android开发,我们都知道界面就是Activity,通过实现Activity然后控制其生命周期就能将界面展现给用户。那Activity究竟是如何将界面展示出来的呢?或者说展示界面一定需要Activity吗?这就需要知道今天要说到的WindowManagerService(WMS)了。二、简单认识一般情况,我们需要写一个View,都会在activity的XML布局里添...原创 2018-04-10 08:16:39 · 1280 阅读 · 0 评论 -
支持资源文件替换的多渠道打包插件(四)
系列文章: 从Android Plugin源码开始彻底理解gradle构建:初识AndroidDSL(一)从Android Plugin源码开始彻底理解gradle构建:Extension(二)从Android Plugin源码开始彻底理解gradle构建:Task(三)一、写在前面经过前面几篇文章的学习(什么?你还没看,赶紧去补补!),对gradle已经有了大致的了解了,当学习...原创 2018-06-04 14:23:32 · 1274 阅读 · 0 评论 -
Dagger2.1不是Dagger2
一、前言在学习android architecture components(简称acc)时下载了google官方demo,demo里有一部分是关于dagger+mvvm(mvp)+acc的,本以为阅读起来没有压力但结果却是一脸懵逼,是的,dagger的写法以及注解完全陌生。难道dagger更新了?本着落后就要挨打的原则去google了一番,发现国内资料通篇都是dagger原本的用法,并没有找...原创 2018-08-21 19:02:54 · 717 阅读 · 0 评论 -
Dagger2新版注解及源码解析
一、序接:Dagger2.1不是Dagger2demo地址:https://github.com/mrqatom/DaggerInjection通过学习,我们知道了新版Dagger的用法,可是作为有追求的骚年,不能仅仅成为API的搬运工,必须要了解一下其中具体的用法以及实现方式。首先我们来看看几个注解的具体作用。二、@Component.Builder我们在AppCompone...原创 2018-08-30 10:38:35 · 664 阅读 · 0 评论 -
Android Jetpack--lifecycle全解析
1、概述google的jetpack已经出来很久了,最近项目中用接入后,也是遇到了不少坑。于是抽时间好好研究了下lifecycle、livedata、viewModel等源码,本文就来介绍一下lifecycle的用法及原理。2、设计初衷先来一句官方解释:android.arch.lifecycle 包提供了可以用于构建生命周期感知(lifecycle-aware)组件的类和接口,这些组件可以...原创 2019-04-17 15:18:53 · 2133 阅读 · 0 评论 -
Android性能优化神器-AspectJ
一、AOPAOP:面向切面编程(Aspect-Oriented Programming)。如果说,OOP如果是把问题划分到单个模块的话,那么AOP就是把涉及到众多模块的某一类问题进行统一管理。比如有三个模块:登陆、转账、大文件上传,现在需要加入性能检测功能,统计这三个模块每个方法耗时多少。OOP思想做法是设计一个性能检测模块,提供接口供这三个模块调用。这样每个模块都要调用性能检测模块的接...原创 2019-09-19 17:21:08 · 1112 阅读 · 3 评论 -
【Android源码系列】消息机制:Handler源码解析
前言这篇文章本来应该前几天就出炉的,不过笔者当时正看得起劲,头忽然昏的不行,心想难道是撸多了?咳咳..最后脑供血不足去医院检查了一下,做了脑部CT发现很健康,这就奇怪了。后来想想应该是当时门窗都关的太严实了,刚好外面装修的甲醛充满了房间..所以各位在学习的同时一定要锻炼身体啊(好像也没啥因果关系- -),不然什么都是浮云了…. 进入正题,之前我们研究四大组件源码时,有一个H类大家印象一定很深刻(滑原创 2017-12-01 16:24:37 · 617 阅读 · 0 评论 -
VirtualAPK插件化方案原理探索
一、前言最近刚好在看任玉刚的《安卓开发艺术探索》,学到了不少东西。前面刚写完四大组件的原理分析,算是对Android组件进一步了解。趁热打铁,了解一下滴滴出品的VirtualAPK插件化方案,同样是刚哥参与的,站在巨人的肩膀来看看。 插件化、热更新在国内近段时间相当火热,我们也得跟上啊。学习插件化不仅仅只有”插件化”这么简单而已,涉及到相当多的知识,对我们提升还是有一定帮助的。之前也看过鸿洋的文章原创 2017-11-21 19:02:47 · 1093 阅读 · 4 评论 -
【Android源码系列】ContentProvider启动源码解析
一、前言终于到了ContentProvider,四大组件的尾声了。一般情况(至少我是这样),用到ContentProvider的机会不多,他是Android专门用来跨进程通信使用的,底层也是binder实现。怎么实现的呢?往下看吧。 一般我们使用的场景是这样的: Uri uri = Uri.parse("com.ooo.xxx"); getContentResolv原创 2017-11-15 15:04:02 · 443 阅读 · 0 评论 -
多线程--异步任务AsyncTask由浅入深探究
养成写博客的习惯,帮助大家的同时自己知识也能得到巩固,本文大多是我的读书心得,比较基础,希望能给大家一点帮助。一般我们执行耗时任务,都是通过Thread执行,然后再通过Handler更新UI,虽然这种方式对整个过程控制很精细,但是代码相对臃肿,Android1.5后提供了工具类AsyncTask.一般执行AsyncTask步骤为: 1、execute:通过execute(param… par原创 2016-12-18 15:40:57 · 369 阅读 · 0 评论 -
Android-Lint工具使用
在做资源清理的时候无可避免的用到了Android-Lint,本文主要讲述Android-Lint的使用以及使用中的一些注意事项。Android-Lint是SDK Tools 16 (ADT 16)之后才引入的工具,通过代码检查,可发现潜在的问题,并能对Android程序进行优化处理。在AndroidStudio中已经集成了该工具,下面直接演示使用方法。如图,在顶部菜单栏找到转载 2017-02-07 10:28:39 · 489 阅读 · 0 评论 -
Android性能优化系列—布局优化
最近在看性能Android优化方面的书,总结一下,以及记录自己的理解。1、include 当应用重复使用同一个布局时,如果按正常布局写法,会导致很多重复内容,修改时也会全部修改,可能导致错误。这样就可以使用include标签来公用同一个布局。最常用的就是我们的app标题栏。<LinearLayout xmlns:android="http://schemas.android.com/ap原创 2017-02-03 22:21:21 · 310 阅读 · 0 评论 -
非常简易的Rxjava2+Retrofit2封装
学习了一段时间Rxjava2、Retrofit2,为了以后项目能直接用,决定自己手动封装一下,虽然网上也有不少Demo,但是为了加深印象,还是根据自己的理解简单的封装一下。文章中涉及到的Rxjava2、Retrofit2基础知识就不再多说,大家自行google即可。首先写一个mHttpRequest ,作为网络请求接口public interface mHttpRequest { //参原创 2017-04-07 16:27:09 · 2768 阅读 · 0 评论 -
Android多进程IPC机制——binder原理探索
说到进程,刚开始学Android的时候无法理解进程和线程的区别,我的理解是:线程就是工作台,完成一件工艺品需要多道工序(可同时操作此作品,其中就涉及到线程安全),而进程是车间,当工厂越来越大,你需要的工作空间(内存)越来越多,就需要再建一个车间来作业了,进程就是如此。我们新建一个进程很简单:<activity android:name="com.example.MyProc原创 2017-06-06 17:50:56 · 594 阅读 · 0 评论 -
【Android源码系列】Activity启动源码解析
一、前言最近看《Android开发艺术探索》大多涉及到源码解析,仅仅看书有点云里雾里,于是配合着源码一起看感觉清晰许多。网上很多推荐source insight看源码,下来之后体验感觉一般,还不如AS直接看。老罗有专门的源码查看教学,但是需要Linux(Ubuntu)/MAC机器,暂时没条件以后考虑(老罗讲的比较深入,值得长期跟)。总之还是在AS里看(求推荐),强烈推荐浏览本文时和着源码。二、源码解原创 2017-11-07 17:20:24 · 702 阅读 · 0 评论 -
【Android源码系列】Service启动源码解析
一、写在前面上次说了Activity启动,我们接着来看Service。同为四大组件,两者的启动方式相差不多,有了上次的经验,分析起来得心应手。但是我们知道Service有两种方式:start&bind。Intent intent = new Intent(MainActivity.this, StartService.class); startService(inte原创 2017-11-09 12:43:07 · 715 阅读 · 0 评论 -
【Android源码系列】BroadcastReceiver启动源码解析
一、先BB两句Android四大组件源码已经分析完Activity和Service,已经攻克一半,现在读起源码越来越得心应手。 阅读本篇文章前建议先阅读我的前两篇博文: 【Android源码系列】Activity启动源码解析 【Android源码系列】Service启动源码解析 今天我们来看看BroadcastReceiver(广播)的源码逻辑,此前说过的流程在这里可能会简化(懒)。其实他们原创 2017-11-13 11:45:08 · 609 阅读 · 0 评论 -
flutter-异步编程
首先看一张Flutter体系结构图:我们只关注线程相关信息1、Framework:我们直接接触的层级2、engine:Dart Isolate Setup,创建Isolate,类似于DartVM中的线程,他的架构就是一个循环:event loops但这一层并不创建及管理线程,它要求Embeder提供四个Task Runner,也就是和真正的线程类似的玩意,并不是真正的线程。因为尽管Fl...原创 2019-09-29 09:47:28 · 532 阅读 · 0 评论