3 just2learn

尚未进行身份认证

暂无相关描述

等级
TA的排名 117w+

View的onAttachedToWindow和onDetachedFromWindow的调用时机分析

笔者为什么会挑这个话题,是因为长时间以来我自己对这2个方法一直有些疑惑,比如:为啥叫onAttachedToWindow而不是onAttachedToActivity,Window又是什么,在哪里?毕竟我们平时绝大多数时候接触到的是Activity啊; Activity有明确的生命周期方法,但View却没有,那么这2个方法可以认为是View的吗?它们又何时会被调用呢?慢慢地随着在这一行逐渐...

2019-06-28 10:56:52

java循环遍历List时删除元素总结

在日常代码中,遍历List然后删除特定的元素是很常见的操作,Java中的循环主要有普通的for循环、增加for循环、iterator遍历这几种方法,我们知道在循环list时删除元素可能引起异常,这里总结下什么情况下会引起异常,什么情况不会引起异常。1.for循环正序遍历listfor(inti=0;i<list.size();i++){if(list.get(i).e...

2019-06-27 17:24:01

使用aapt2 修改apk打包的资源id

在进行插件化开发时,如果插件apk含有res资源,宿主apk和插件apk在编译时都会产生自己的resources.arsc。由于打包后的宿主和插件apk资源id默认都是0x7f开头,那么它们的resources.arsc中的资源id必定是有相同的情况,会引起资源id冲突问题。解决问题目前一共有两种思路:1.修改aapt源码,定制aapt工具,编译期间修改PP段。(PP字段是资源id的第一...

2019-05-07 18:56:59

APK打包流程

1.简单build流程图官网给了我们一张非常简单的编译、打包、apk生成内容以及签名的图片。图片大体介绍了从Project到运行到设备或者模拟器的一个大体流程,我们也从中看到一个完整的apk包含如下内容:一个或多个dex文件、resources.arsc、未编译的资源文件以及AndroidManifest.xml文件等等由android的项目经过编译和打包,形成了:.dex文...

2019-05-06 09:26:13

DirectBoot功能介绍

当手机已经通电开机但是用户并有解锁锁屏的时候,AndroidN运行于一个安全的模式,也就是DierectBoot模式。​为了支持DierectBoot模式,系统提供了两个存储数据的地方:1.Credentialencryptedstorage,默认存储数据的地方,仅在用户解锁手机后可用。2.Deviceencryptedstorage,主要对应的就是DirectBoot使用的...

2019-01-27 00:02:55

超详细java中的ClassLoader详解

作者简介原创微信公众号郭霖WeChatID:guolin_blog转自:https://blog.csdn.net/briblue/article/details/54973413前言ClassLoader翻译过来就是类加载器,普通的Java开发者其实用到的不多,但对于某些框架开发者来说却非常常见。理解ClassLoader的加载机制,也有利于我们编写出更高效的代码。...

2019-01-23 09:09:41

ART、JIT、AOT、Dalvik之间的关系

JIT与DalvikJIT是"JustInTimeCompiler"的缩写,就是"即时编译技术",与Dalvik虚拟机相关。怎么理解这句话呢?这要从Android的一些特性说起。JIT是在2.2版本提出的,目的是为了提高Android的运行速度,一直存活到4.4版本,因为在4.4之后的ROM中,就不存在Dalvik虚拟机了。我们使用Java开发android,在编译打包APK...

2019-01-18 09:19:39

SQLite在3.7.0版本的WAL机制

  在androidP上调试数据库拷贝问题时,发现应用的databases目录下除了普通的db后缀的数据库文件外,还有两个额外的文件,以我自己的应用为例,分别为app.db、app.db-wal、app.db-shm。然后发现即使已经往数据库更新数据后,通过工具打开db文件发现文件中的数据并未变化。调查了下发现是SQLite在3.7.0版本上的新特性。   1.什么是WAL?  ...

2019-01-15 15:18:56

Android自定义权限使用总结

1、如何声明自定义权限在Manifest文件中使用Permission标签定义自己的权限:<?xmlversion="1.0"encoding="utf-8"?><manifestxmlns:android="http://schemas.android.com/apk/res/android"package="com.bright.permissio...

2019-01-15 11:09:24

Android8.0 启动后台Service问题

 androidP上应用在后台启动service时报了个异常:java.lang.IllegalStateException,NotallowedtostartserviceIntent Android8.0对特定函数做出了以下变更:如果针对Android8.0的应用尝试在不允许其创建后台服务的情况下使用startService()函数,则该函数将引发一...

2019-01-14 14:55:25

Java中Volatile关键字详解

Java语言提供了一种稍弱的同步机制,即volatile变量,用来确保将变量的更新操作通知到其他线程。当把变量声明为volatile类型后,编译器与运行时都会注意到这个变量是共享的,因此不会将该变量上的操作与其他内存操作一起重排序。volatile变量不会被缓存在寄存器或者对其他处理器不可见的地方,因此在读取volatile类型的变量时总会返回最新写入的值。  在访问volatile变量时不会...

2019-01-07 09:40:43

TypedArray流程分析

Context#obtainStyledAttributes//调用Resources.Theme的obtainStyledAttributes方法returngetTheme().obtainStyledAttributes(attrs);在Context中的getTheme方法是抽象方法,那我们得看他的子类的具体实现,我们一般会在自定义View的时候调用此方法,而自定义V...

2019-01-04 13:53:17

HashMap、Hashtable、ConcurrentHashMap的原理与区别

转载自https://www.cnblogs.com/heyonggang/p/9112731.html下面直接来干货,先说这三个Map的区别:HashTable底层数组+链表实现,无论key还是value都不能为null,线程安全,实现线程安全的方式是在修改数据时锁住整个HashTable,效率低,ConcurrentHashMap做了相关优化 初始size为11,扩容:newsi...

2019-01-03 14:22:59

INotify与Epoll机制

使用背景AndroidInput需要使用InputReader去监控设备节点的一些动作,包括节点的新建和删除动作以及如何去确定节点中是否有内容可以去读.最简单的方法是起一个线程在循环中不断地去做轮询(polling),但是这样做的效率比较低,而且会导致设备的电量在无意义的轮询中消耗掉.众所周知Android使用的Linux内核,因此面对这种问题,Android使用了Linux提供的INoti...

2019-01-01 16:54:15

深入理解MessageQueue

这篇文章写的不错https://blog.csdn.net/qq_24531461/article/details/72972416#commentBox,用简单的代码将大体原理描述清除,通俗易懂。下面补充个图:这个图比较形象的介绍了,handler、Looper、MessageQueue和Msg的关系,其中Looper和MessageQueue是比较重要的两个类。Looper的lo...

2018-12-31 15:40:45

Android UID的分配、查看及相关知识

转载自https://www.jianshu.com/p/b33dd49f2ae6uidpidgidgids的含义和作用 uid的分配 查看应用UID的几种方式 通过uid获取包名,通过包名获取uid下面所有涉及的示例代码都是基于Android8.1的。1.uidpidgidgids的含义和作用uid:android中uid用于标识一个应用程序,ui...

2018-12-29 16:27:05

android P 隐藏API对系统APP的影响

转载至 https://www.jianshu.com/p/8286c91fdcb9androidP限制了第三方APK对@hideAPI的调用,那么对系统APK有什么影响呢?国内各大手机厂商对ROM进行各种定制,可以很容易绕过这些限制,那对于需要出海并且满足CTS要求的厂商有什么影响呢?先说结论:对系统厂商APK没有任何影响,依然可调用任何API 第三方APK,受hide...

2018-12-28 14:36:06

activity getIntent() 方法获取不到值的问题分析

之前有同事小伙伴问我说,他在activity里边调用getIntent()方法没有获取到应该传递过来的值。看了下他这个activity是singletask属性的,怀疑是由于activity的singletask属性引起的。本文主要是针对这个getIntent()方法分析下源码定位原因:/**Returntheintentthatstartedthisactivit...

2018-12-15 23:16:45

Activity的启动流程中创建应用程序进程的流程分析

之前从网上找到的一张activity启动流程图,步骤画的比较全,不过有创建应用进程的地方有两个点没表现出来,本文又根据代码简单的捋了一下这个地方。 AMS创建应用进程时,在startProcessLocked方法中通过Process.start方法创建进程://Starttheprocess.Itwilleithersucceedandretu...

2018-12-14 23:21:53

java中静态变量、成员变量、构造函数 的执行顺序

今天在抖音上看了个java面试题,结果被打脸了,题目是这样的:这个地方我原来按照直觉觉得结果是 Dog,结果被打脸是null空。然后重新查了下静态变量、成员变量、构造函数的执行顺序问题,有两篇文章写的不错,可以参考下:https://blog.csdn.net/qq_23476319/article/details/53286230http://www.cnblogs.c...

2018-12-12 22:41:37

查看更多

勋章 我的勋章
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。