
经验总结
just2learn
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
ConstraintLayout 属性详解 和Chain的使用
本文的顺序,大体按照ConstraintLayout官方文档的顺序依次讲解(翻译)属性和用法,并对疑难点进行额外说明。关于可视化操作,可参考我写的动态图解&实例 ConstraintLayout Chain和郭神博文可视化操作使用前的准备引入也有坑,无力吐槽。先放上 截止至20170524,最新版本1.0.1:compile 'com.android.support.const...转载 2020-04-07 20:01:48 · 850 阅读 · 0 评论 -
Android应用ANR分析
最近碰到了个死锁的anr,看了这篇文章挺有用的,mark下:一.ANR是什么Application Not Responding,字面意思就是应用无响应,稍加解释就是用户的一些操作无法从应用中获取反馈。在实际的应用中应当去避免这种现象,虽然他暂时不会造成应用崩溃,但是却极大的损坏了用户体验。二.ANR的触发原因出现ANR之后一个直观现象就是系统会展示出一个ANR对话框,大概是...转载 2020-01-19 19:20:37 · 1135 阅读 · 1 评论 -
AsyncLayoutInflater实现异步加载布局
「性能优化1.0」启动分类及启动时间的测量「性能优化1.1」计算方法的执行时间「性能优化1.2」异步优化「性能优化1.3」延迟加载方案「性能优化2.0」布局加载原理「性能优化2.1」LayoutInflater Hook控件加载耗时「性能优化2.2」获取布局的加载时间「性能优化2.3」Choreographer检测丢帧「性能优化2.4」 AsyncLayoutInflater实现异步加载布局一...转载 2020-01-16 10:45:55 · 968 阅读 · 0 评论 -
xfermode的基本用法
之前使用时遇到点坑,有个注意的地方:绘制顺序,先画src bitmap,设置xfermode后,再画dst bitmap。只有两次都是draw bitmap时才有效,之前我用的drawCircle直接绘制图形叠加后没效果,后来先自己画一个圆的bitmap在往上面画就可以了。下面转载一篇xfermode 像素叠加原理的介绍:1、Xfermode是什么在Android自定义控...转载 2019-12-25 14:34:34 · 231 阅读 · 0 评论 -
Android 静态广播和动态广播接收顺序
Android广播有两个很重要的要素: 1 广播-用于发送广播 有序广播 - 被广播接收器接收后,可被终止,无法往下继续传达。 典型代表:短信广播 普通广播 - 发送至每一个已经注册(订阅)的广播接收器,无法被终止。 典型代表:开机启动广播 2广播接收器- 用于订阅广播后接收广播 静态注册广...转载 2019-12-16 19:58:20 · 1146 阅读 · 0 评论 -
彻底搞懂Gradle、Gradle Wrapper与Android Plugin for Gradle的区别和联系
首先用一段通俗易懂但是不是非常专业的话描述一下三者的概念、区别和联系。Gradle是个构建系统,能够简化你的编译、打包、测试过程。熟悉Java的同学,可以把Gradle类比成Maven。 Gradle Wrapper的作用是简化Gradle本身的安装、部署。不同版本的项目可能需要不同版本的Gradle,手工部署的话比较麻烦,而且可能产生冲突,所以需要Gradle Wrapper帮你搞定这些事...转载 2019-11-28 11:28:45 · 168 阅读 · 0 评论 -
Android - 收藏集
Android 自定义View的各种姿势1Activity的显示之ViewRootImpl详解Activity的显示之ViewRootImpl初探Activity的显示之Window和ViewAndroid系统的创世之初以及Activity的生命周期图解Android事件分发机制(深入底层源码)Android 自定义View的各种姿势2Android 内存泄漏分析与解决...转载 2019-11-27 13:35:36 · 413 阅读 · 0 评论 -
createPackageContext方法分析----------记一次context的getApplicationContext为空问题
通过createPackageContext方法获取其他应用context,lnflate这个应用的布局视图添加后,此视图context的getApplicationContext为空问题调查。问题现象:通过调用createPackageContext方法获取了某个应用的context:remoteContext,然后通过remoteContext.getResources()获取对于...原创 2019-11-15 17:46:41 · 2737 阅读 · 1 评论 -
Binder之传输机制篇_下
1 事务的传递和处理 从IPCThreadState的角度看,它的transact()函数是通过向binder驱动发出BC_TRANSACTION语义,来表达其传输意图的,而后如有必要,它会等待从binder发回的回馈,这些回馈语义常常以“BR_”开头。另一方面,当IPCThreadState作为处理命令的一方需要向发起方反馈信息的话,它会调用sendReply()函数,向bin...转载 2019-09-11 23:48:10 · 488 阅读 · 0 评论 -
Binder之传输机制篇_中
1 谈谈底层IPC机制吧 在上一篇文章的最后,我们说到BpBinder将数据发到了Binder驱动。然而在驱动层,这部分数据又是如何传递到BBinder一侧的呢?这里面到底藏着什么猫腻?另外,上一篇文章虽然阐述了4棵红黑树,但是并未说明红黑树的节点到底是怎么产生的。现在,我们试着回答这些问题。1.1 概述 在Binder驱动层,和ioctl()相对的动作是b...转载 2019-09-11 23:46:41 · 526 阅读 · 0 评论 -
Binder 之传输机制篇_上
1 Binder是如何做到精确打击的? 我们先问一个问题,binder机制到底是如何从代理对象找到其对应的binder实体呢?难道它有某种制导装置吗?要回答这个问题,我们只能静下心来研究binder驱动的代码。在本系列文档的初始篇中,我们曾经介绍过ProcessState,这个结构是属于应用层次的东西,仅靠它当然无法完成精确打击。其实,在binder驱动层,还有个与之相对的结构,...转载 2019-09-11 23:45:21 · 361 阅读 · 0 评论 -
Binder 之ServiceManager
1.先说一个大概 Android平台的一个基本设计理念是构造一个相对平坦的功能集合,这些功能可能会身处于不同的进程中,然而却可以高效地整合到一起,实现不同的用户需求。这就必须打破过去各个孤立App所形成的天然藩篱。为此,Android提供了Binder机制。 在Android中,系统提供的服务被包装成一个个系统级service,这些service往往会在设备启动...转载 2019-09-11 23:43:44 · 365 阅读 · 0 评论 -
Binder 概述
1 什么是Binder? 简单地说,Binder是Android平台上的一种跨进程交互技术。该技术最早并不是由Google公司提出的,它的前身是Be Inc公司开发的OpenBinder,而且在Palm中也有应用。后来OpenBinder的作者Dianne Hackborn加入了Google公司,并负责Android平台的开发工作,所以把这项技术也带进了Android。...转载 2019-09-11 22:48:26 · 4370 阅读 · 0 评论 -
Activity 启动模式及常见启动Flag总结
Activity 4种启动模式:1、android:launchMode=”standard” 标准启动模式。这种启动模式也是Activity默认的,一个栈中可以有多个相同的Activity。不会考虑是否栈中是否有相同的Activity。比如设置A为standard模式,那么可以运行A-B-A-A-A;2、android:launchMode=”singleTop” 单一栈顶启动模式,栈顶只能...原创 2018-11-08 23:33:29 · 4146 阅读 · 2 评论 -
androidFD泄露问题总结
最近项目上偶尔会碰到fd泄露的问题,这类问题由于没有必现方法,log又无法定位到具体原因,解决起来有点无从下手的感觉,因此结合了网上的一些资料进行下总结。本文参考转载自:https://www.imooc.com/article/48546https://www.jianshu.com/p/befd4b86cc42https://blog.youkuaiyun.com/xlnaan/article...转载 2018-11-28 23:44:51 · 12499 阅读 · 1 评论 -
Android The content of the adapter has changed but ListView did not receive a notification问题分析
最近一同事的模块在monkey测试时报出了一个crash:java.lang.IllegalStateException: The content of the adapter has changed but ListView did not receive a notification. Make sure the content of your adapter is not modifi...原创 2018-12-03 16:12:06 · 581 阅读 · 0 评论 -
activity getIntent() 方法获取不到值的问题分析
之前有同事小伙伴问我说,他在activity里边调用getIntent()方法没有获取到应该传递过来的值。看了下他这个activity是single task属性的,怀疑是由于activity的single task属性引起的。本文主要是针对这个getIntent()方法分析下源码定位原因: /** Return the intent that started this activit...原创 2018-12-15 23:16:45 · 5791 阅读 · 3 评论 -
Android8.0 启动后台Service问题
android P上应用在后台启动service时报了个异常:java.lang.IllegalStateException,Not allowed to start service Intent Android 8.0 对特定函数做出了以下变更:如果针对 Android 8.0 的应用尝试在不允许其创建后台服务的情况下使用 startService() 函数,则该函数将引发一...原创 2019-01-14 14:55:25 · 3321 阅读 · 0 评论 -
Android自定义权限使用总结
1、如何声明自定义权限在Manifest文件中使用Permission标签定义自己的权限:<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.bright.permissio...转载 2019-01-15 11:09:24 · 444 阅读 · 1 评论 -
SQLite在3.7.0版本的WAL机制
在android P上调试数据库拷贝问题时,发现应用的databases目录下除了普通的db后缀的数据库文件外,还有两个额外的文件,以我自己的应用为例,分别为 app.db、app.db-wal、app.db-shm。 然后发现即使已经往数据库更新数据后,通过工具打开db文件发现文件中的数据并未变化。调查了下发现是SQLite在3.7.0版本上的新特性。 1.什么是WAL? ...原创 2019-01-15 15:18:56 · 1140 阅读 · 1 评论 -
DirectBoot功能介绍
当手机已经通电开机但是用户并有解锁锁屏的时候,Android N运行于一个安全的模式,也就是Dierect Boot模式。 为了支持Dierect Boot模式,系统提供了两个存储数据的地方:1.Credential encrypted storage,默认存储数据的地方,仅在用户解锁手机后可用。2.Device encrypted storage,主要对应的就是Direct Boot使用的...转载 2019-01-27 00:02:55 · 5196 阅读 · 2 评论 -
记LinearLayout原生的一个尺寸计算Bug
先写一下得出的结论:vertical 布局的LinearLayout,如果其中某个 child的 height + marginTop + marginBottom值为负值,就可能出现LinearLayout最下方多出一块空白区域的问题,应该是原生代码的一个设计缺陷吧。代码如下:protected void onCreate(Bundle savedInstanceState) {...原创 2019-08-27 13:53:55 · 188 阅读 · 0 评论 -
详解在onMeasure()方法中如何测量一个控件尺寸----值和模式传递机制
今天的任务就是详细研究一下protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec)方法。如果只是说要重写什么方法有什么用的话,还是不太清楚。先去源码中看看为什么要重写onMeasure()方法,这个方法是在哪里调用的:一、源码中的measure/onMeasure方法: protected void...转载 2019-09-11 20:17:33 · 601 阅读 · 0 评论 -
View 的getX、getLeft、getTranslationX、getScrollX、offsetLeftAndRight含义分析
View 的getX、getLeft、getTranslationX、getScrollX含义分析参考https://blog.youkuaiyun.com/tanktu/article/details/12752747getLeft 是子view相对于父组件的坐标位置,是layout的位置;getTranslationX 是指view的偏移量,这个值没有改变view的实际位置,点击事件等还是在原来的位...原创 2018-11-07 15:39:14 · 1573 阅读 · 0 评论