![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Android
文章平均质量分 93
带刀少年ha
这个作者很懒,什么都没留下…
展开
-
SparseArray 理解
一、介绍SparseArray(稀疏数组) ; Android内部特有的api ; SparseArray更节省内存空间;android 提供的数据结构, 功能类似HashMap ; 与map不同的是key 只能是int ;二、使用SparseArray<Object> sparseArray = new SparseArray<>(0); sparseArray.put(0,null); sparseArray.put(1,"a原创 2021-10-17 19:22:14 · 446 阅读 · 1 评论 -
插件化学习之Hook 是怎么回事
最近在学插件化的东西,插件化提到了一个Hook 技术,发现Hook 这个词什么意思都不知道,经过研究学习后有了一定的理解,这里做一下对Hook 理解的笔记。下面通过一个例子来理解Hook ,启动一个没有在AndroidManifest.xml 注册的Activity;我们知道Android 的Activity 是需要在AndroidManifest.xml 注册的,如果没注册是不能创建成功...原创 2019-12-06 20:21:34 · 1139 阅读 · 0 评论 -
Android 8.0 Activity 启动流程
从Activity 的启动流程不仅可以更加的熟悉Activity 的相关知识点,还可以学习架构设计的思想,设计模式,大型项目代码结构。。,所以Activity 启动流程还是很值得看一看的。在应用层调用startActivity 后,会经过一系列的调用,经过进程间通信(IPC),调用到ActivityManagerService (AMS)的startActivity 方法,这样程序走到了系统服...原创 2019-12-03 17:55:34 · 3928 阅读 · 0 评论 -
Window
WindowManagerGlobal 内部有如下几个列表比较重要:// mViews 存储的是所有Window 所对应的Viewprivate final ArrayList<View> mViews = new ArrayList<View>(); //mRoots 存储的是所有Window 所对应的ViewRootImpl private...原创 2019-04-26 22:09:43 · 190 阅读 · 0 评论 -
面向对象六大原则
学习设计模式的读书笔记。单一职责原则就一个类而言,应该仅有一个引起它变化的原因(一个类应该是一组相关性很高的函数、数据的封装)。开闭原则软件中的对象(类、模块、函数等)应该对应扩展是开放的,但是,对于修改是封闭的(在软件的生命周期内,因为变化、升级和维护等原因需要对软件原有代码进行修改时,可能会将错误引入原本已经经过测试的旧代码中,破坏原有系统)。里氏替换原则就是继承思想,...原创 2019-04-23 09:07:00 · 134 阅读 · 0 评论 -
气泡样式的自定义View
自己学习自定义View 画了一个简单的自定义View ,做一下笔记。public class BubbleView extends View { private Paint mPaint; private Path path; // 默认定义圆角为80 个像素点,后期可以考虑加到属性里 private int corner = 80; pub...原创 2019-05-04 19:09:45 · 295 阅读 · 0 评论 -
Flags
FLAG_ACTIVITY_NEW_TASK 为Activity 指定singleTask 启动模式。FLAG_ACTIVITY_SINGLE_TOP 为Activity 指定singleTop 启动模式。FLAG_ACTIVITY_CLEAR_TOP 启动具有此标记位的Activity ,在同一个任务栈,所有位于它上面的Activity 都要出栈。这个标记位一般会和single...原创 2019-04-25 10:26:33 · 318 阅读 · 0 评论 -
intent-filter 的匹配规则
只写Action 不行,<activity android:name=".a.BActivity"> <intent-filter> <action android:name="intent.action.test.bbb" /> </intent-filter></activity>// 这...原创 2019-04-25 11:29:34 · 202 阅读 · 0 评论 -
GridView 加载图片界面卡顿问题
gridView.setOnScrollListener(new AbsListView.OnScrollListener() { @Override public void onScrollStateChanged(AbsListView view, int scrollState) { if (scrollSta...原创 2019-04-12 11:28:17 · 1455 阅读 · 1 评论 -
Android 插值器
插值器看一下Interpolator 与TimeInterpolator ,发现了inputinput值值变化范围是0-1,且随着动画进度(0% - 100% )均匀变化,即动画开始时,input值 = 0;动画结束时input = 1,而中间的值则是随着动画的进度(0%-100%)在0到1之间均匀增加。public interface TimeInterpolator...原创 2019-03-31 18:57:32 · 233 阅读 · 0 评论 -
Android8.0 Activity 启动流程
参考别人的分享,总结了一下代码的调用流程,做了一下笔记startActivity() -> startActivityForResult() -> mInstrumentation.execStartActivity() -> ActivityManager.getService().startActivity(),会通过Binder机制,调用到ActivityManag...原创 2019-02-28 19:57:08 · 1234 阅读 · 0 评论 -
面试知识点总结
进程进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。线程线程(英语:thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。进程与线程的区别1)进程是资源分配最小单位,线程是程序执行的最小单位;2)进程有自己独立的地址空间,每启动一个进程,系统都会为其分配...原创 2019-03-10 14:58:21 · 122 阅读 · 0 评论 -
Android getSuggestedMinimumWidth()
// mMinWidth 对应与android:minWidth 这个属性所指定的值,这个属性如果不指定,// 那么mMinWidth 则默认为0 protected int getSuggestedMinimumWidth() { return (mBackground == null) ? mMinWidth : max(mMin...原创 2019-03-10 18:15:52 · 1425 阅读 · 0 评论 -
分析measure
int size; // 为父View的大小-(自己的Padding+子View的Margin,可能还有sizeUsed),这些值计算后的值switch (specMode) { //1、父View是EXACTLY的 ! case MeasureSpec.EXACTLY: 1)子View的width或height是个精确值(childDimension &g...原创 2019-03-10 18:57:45 · 185 阅读 · 0 评论 -
Activity 启动模式笔记
有个同学面试了面试官问道了SingleTask ,然后发现自己也只是看过相关文章,并没有写过测试过相关代码,所以测试一下。<activity android:name=".start.StartTestActivity" android:launchMode="singleTask"> <intent-...原创 2019-03-12 15:55:04 · 169 阅读 · 0 评论 -
Android View 的事件分发机制
相较其它知识来说事件分发机制还是有一定难度的,属于Android 进阶方面的知识,对于初学者来说,还是很乱的,所以建议先掌握好基础,再想办法进阶。我在学习事件分发机制时,也是反复学习,尤其是第一次看这块,感觉还是很麻烦的,咬着牙看完别人的博客,简单看看源码,看完这后,感觉自己还是没有理解,不过事情总要有个开头吧,所以在那之后,有时间了,再次看,发现收获,还是比之前多些,所以发现有些问题不能着急。...原创 2019-01-18 21:55:24 · 149 阅读 · 0 评论