自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(28)
  • 资源 (2)
  • 收藏
  • 关注

原创 安卓内存泄漏分析(Memory Analyzer Tools)笔记

启动应用,获取.hprof文件 adb remount(获取读写权限) adb shell am dumpheap com.iflytek.request sdcard/aaaa.hprof(将.hprof文件写入系统指定目录下,文件名字自定义) 将.hprof文件拷贝出系统 adb pull /sdcard/aaaa.hprof D:\logcat 将.hprof文件转换成mat能识别的文件 进入SDK\platform-tools的目录下 D:\SDK...

2021-04-09 11:42:44 169

原创 通用设计模式整理

目录 单例设计模式 工厂方法模式 抽象工厂模式 建造者模式 原型模式 享元模式 门面模式 适配器模式 装饰模式 策略模式 模板方法模式 观察者模式 责任链模式 单一职责原则 开闭式原则 里氏替换原则 接口隔离原则 依赖倒置原则 系列文章目录提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加例如:第一章 Python 机器学习入门之pandas的使用提示:写完文章后,目录可以自动生成,如何生成可参考右...

2021-04-08 15:42:21 286

原创 AndroidTest之Junit测试

什么是单元测试 对最小的可测试单元进行测试和验证 为什么要进行单元测试 单元测试使得我们可以放心修改、重构业务代码,而不用担心修改某处代码后带来的副作用。 单元测试可以帮助我们反思模块划分的合理性,如果一个单元测试写得逻辑非常复杂、或者说一个函数复杂到无法写单测,那就说明模块的抽象有问题。 单元测试使得系统具备更好的可维护性、具备更好的可读性;对于团队的新人来说,阅读系统代码可以从单元测试入手,一点点开始后熟悉系统的逻辑。 sss ...

2021-03-29 16:47:30 448

原创 java泛型的说明及使用

泛型技术产生的背景 在泛型出来之前,程序员是通过object对象来存储任意值的集合,该方法在使用时,必须知道存储的类型,否组容易引起classcastexcption异常 泛型操作的实现 package com.iflytek.request.genericity;public class Genericity { public void point_Integer() { Point<Integer> point = new Poi..

2021-03-19 17:10:30 109

原创 java异常的捕获及处理

异常的产生以及对于程序的影响 异常是导致程序中断执行的一种指令流,异常一旦出现并且没有进行合理处理的话,那么程序就会中断 异常的处理格式 处理异常的关键字,三个关键字:try,catch,finally try,catch中,异常语句后的不执行,仅限try,catch中的 finally不管是否出现异常,都执行 异常的处理流程 如上图为异常异常结构图 Error和Exception 的区别 Error是指JVM错误,此时程序还未执行,用户不可处理 ...

2021-03-19 10:39:04 131

原创 安卓线程池日常总结

线程池主要包括四个组成部分线程池管理器(ThreadPool),创建,管理,添加任务 工作线程(poolWorker),在没有任务的时候等待,有任务的时候执行 任务接口(Task),每个任务必须实现的接口,负责入口,收尾和状态 任务队列(TaskQueue),任务队列,存放任务,缓存任务线程池的作用,限制线程的数量,有效控制效率,线程池的产生主要是防止线程的反复创建和销毁带来的性能问题四种线程池newSingleThreadExecutor(单个的线程,死了新的顶上) newFi.

2021-03-05 15:37:21 69

原创 安卓View的绘制流程个人总结

绘制流程说明Activity启动之后,会从ViewRootImp开始进行遍历,从onmeasure,layout,draw依此进行,即测量,布局,绘制、 measure:从父view中传递的MeasureSpec(计算大小的方法)大小,测量宽高 layout:根据measure得到参数,确定位置,即四个点的位置 draw:将View绘制上去 总结:自定义ViewGroup需要重写OnMeasure,OnLayout,Ondraw,自定义View则不需要OnLayout,原因是OnLayou

2021-03-04 15:31:56 135 1

原创 Java集合常见问题整理

list,set,map的区 list:存储不唯一,有序对象 set:在list的基础上,存储有序不重复对象 map:键值对,key不允许重复,value可以 ArryList和LinkList区别 ArryList和LinkList线程不安全 ArryList查询快,LinkList插入删除快,设计结构导致,一个是使用Object,另一个使用链表 ArryList和Vector的区别,为什么要用ArryList取代Vector呢? 线程是否安全,ArryLi..

2021-03-04 10:34:37 125 1

原创 安卓四种引用类型

强引用 Object obj = new Object(); 只要obj还指向Object对象,Object对象就不会被回收 obj = null; //手动置null 备注说明:只要引用还在,即使内存不足,jvm抛出OutOfMemoryError,也不会去回收,当系统强制回收才会去 软引用 备注说明:当内存充足的时候,软引用对象不会被回收,当内存不足的时候,会去回收软引用对象,软引用对象回收完毕,内存还是不足,才会抛出OutOfMemoryError...

2021-03-03 17:19:35 229 1

原创 java基本数据结构和算法,常见设计模式

数据结构分类:线性和非线性两种线性:数组,链表,队列,栈非线性:树,图,表线性详解:数组:a[i]:查询快,插入删除慢,原因是存在内存中,有角标,直接查询,要插入删除,就得移动空间链表:LinkedList :一个一个从头差,查询慢,添加和删除快,只需要修改索引就ok队列:LinkQueue:先进先出,多线程阻塞队列非常有用栈:先进后出数组与链表的区别:连续和不连续,内存静态分配和内存动态分配算法分类插入(插入和希尔) 交换(冒泡和快排) 选择(...

2021-03-01 16:31:07 426

原创 安卓:关于Binder的一些认识和理解

什么是Binder(共享内核空间数据)Binder是Android跨进程通信方式,它实现了IBinder接口,是安卓跨进程通信的主要桥梁,有着速度快,安全性高的特点我们可以通过设计团队想要解决问题的思路去分析Binder的设计如何知道调用了那个进程和哪个进程的函数 客户端是如何将数据发送给服务端,以及服务端如何将数据返回给客户端 如何屏蔽底层通信,让调用像调用本地方法一样便捷Binder机制系统给应用分配的空间有用户空间和内核空间,binder利用内核空间共享数据,对数据进行拷贝,从而

2021-03-01 11:36:03 292 2

原创 安卓:性能之启动时间的优化

产生性能原因,为什么要做优化 可能在App主进程启动阶段或者在主界面启动阶段放了很多初始化其他业务的逻辑,而这些业务落地可能一开始并不需要用到导致,其结果是启动速度慢,需求要求对启动时间有要求,故需要优化其时间 分析制定优化技术路线 分析之前我们需要了解我们要优化的地方,主要是application和mainactivity,下图是启动过程中一个大概的路程图我们可以打印每个环节的执行时间,如下图 统计数据后制定目标 根据打印时间统计耗时,酌情对需要的地方进行优化,制定..

2021-02-28 11:41:43 156

原创 安卓:关于内存抖动,内存泄漏,内存溢出

前言:应用开发后期会会对应用做性能优化,此时肯定会伴随内存抖动,内存泄漏,内存溢出等问题,此时就会对这些问题进行排查分析,记录一下这些问题的的本质,产生的原因,处理方法(LeakCanary)本质开发者在前期开发过程中,未能合理的创建和及时的销毁对象,导致应有出现卡顿,内存增加,anr等问题产生原因内存抖动:指在短时间内有大量的对象被创建或者被回收的现象 内存泄漏:一个长生命周期的对象持有了一个短生命周期的对象的引用,无法得到释放 内存溢出:为对象申请不到足够的内存空间了处理方法

2021-02-28 11:19:36 115

原创 APP架构基础知识

1:本地构建仓库2:代码仓库3:层次,模块,控件4:模块,组件,插件 ,控件区别(控件:自定义view)答:组件,插件基于模块(android中叫module)(Android studio中叫gradle)5:组件属于module(源码),插件发布以apk发布(二进制)6:仓库 1:源码仓库(gitlab,github,gitee),2:构建仓库(二进制:aar,so...

2020-03-14 11:26:36 454

原创 Handler的一些认识和思考

Handler作用:线程之间切换的转换工具,安卓中主要作用是将子线程切换到UI线程,避免UI线程做耗时操作出现ANRHandler代码架构:Handler本身只负责发送和接收消息,在activity启动的时候创建一个loop,背后是一个MessageQueue管理着Message,而Looper循环主体,负责监听Message变化,从MessageQueue取出消息,然后向Handle...

2020-01-14 10:23:50 164

原创 Android界面Dailog透传Activity

Dailog透传Activity实现自定义Dailog重写dispatchTouchEvent()方法@Override public boolean dispatchTouchEvent(@NonNull MotionEvent ev) { Log.v(TAG, "dispatchTouchEvent"); boolean result = ge...

2020-01-10 14:43:18 1158

原创 我的股票交易成长经历

分享一下我的股票成长经历,希望对大家有帮助第一阶段:了解如何交易,模拟盘操作(大幅亏损,三十个点左右)第二阶段:学习技术分析,蜡烛图,波浪原理,一些常见的技术指标,自己去理解其中的原理(小幅亏损,十五个点左右)第三阶段:学习理论分析,道氏理论,江恩的一些理论书籍(浮亏五个点左右)第四阶段(前期):控制心态,按照自己的操作逻辑严格执行,这个很难(浮赢十五个点左右)第四阶段(后期)...

2019-09-23 16:17:03 367

原创 Android的Touch事件分发理论逻辑讲解

备注:本文主要是对安卓整个Touch事件理论的讲解,主要用于更快了解系统是如何实现这一切事件的分发在了解安卓的事件分发之前,我们先看如下图表(1-1),安卓的事件分发基于下图进行,以下会对每个类一一介绍 图1-1Activity:主要是封装视图(View)和上下文(Context),组成我...

2019-08-07 17:18:20 331

原创 代码编码总结(代码整洁之道)

目录1:为什么整洁代码如此重要1:什么是整洁代码2:整洁代码的好处2:什么样的代码是整洁有序1:命名2:方法3:类4:注释5:风格1:为什么整洁代码如此重要1:什么是整洁代码整洁的代码逻辑简单清晰,可以根据命名得知意图,一个方法只做一件事情,每个类责任尽量单一,注释有实际意义和效果2:整洁代码的好处代码整洁的直接好处是利于后期维护,增加代码的...

2019-07-25 14:32:04 232

原创 谈一谈安卓mk文件用法

闲谈:Android源码是在Linux系统下来发的,里面涉及到的编译系统,如上图,图一的目录下有Makefile 脚本,执行图二的build文件夹内容,具体编译过程可参考:https://www.cnblogs.com/shakin/p/4615872.html连续的几篇博客Android.mk文件:轻量级的makefile文件(makefile定义一些指令,类似脚本文件,指定...

2019-07-15 14:24:43 1918

转载 学习Linux内核的流程

转载于:http://emb.hqyj.com/linux/9952.html之所以学习Linux内核的理由是,我喜欢它,想搞清楚他的原理,而且也愿意花时间去研究。兴趣是好的老师,只有真正的喜欢一个东西,才能把它学好。此外,程序员的好奇心是天生的,要是不弄明白一件事,就会吃不下饭,睡不着觉。没有好奇心的程序员不是真正的程序员。想要深入理解Linux内核,学习Linux内核有什么建议呢?下面我们...

2019-07-08 09:12:35 115

原创 浅谈对RxJava的理解,优点好处

最近看了一下RxJava,之前同事也建议我看看,但一直没时间,最近抽了几个早上看了一下,就简单的说说我的看法吧首先什么是RxJava:它是一个响应式的编程,区别于我们常用的应试编程,是一种观察者的设计模式,封装后是一个实现异步的操作库响应式编程可以将数据和展示分层,很好的解耦,例如我们最常见的Buttom事件,设置监听事件,触发后回调RxJava就是基于这种响应式的方式设计...

2019-06-18 08:48:24 4725

原创 Java并发编程(二):关键字synchronized和volatile讲解

关键字概念synchronized:synchronize叫同步锁,是Lock的简化版,性能肯定不如Lock,但是操作简单方便volatile:是一个类型修饰符,用来修饰被不同线程访问和修改的变量,当一个值被线程修改后,该缓存会立即跟新,保持一致(一致性)关键字作用synchronized:同步代码块,先进先出的原则,由于这种先进先出的原则,很有可能导致线程阻塞,且性能不佳,作用确...

2019-04-26 13:53:35 92

原创 Java并发编程(一):线程安全概念

什么是线程安全多个线程访问某个类时,不管运行环境采用何种的调度方式或者这些线程如何交替执行,在主调代码中不需要采用额外的同步或者协同,这个类至始至终都能表现出正确的行为,那么我们就称这个类是线程的原子性,有序性,可见性原子性:程序在运行过程中要么全部执行,要么不执行,操作是不可中断,不存在停滞在某一个环节的情况,称之为程序原子性有序性:程序执行的顺序按照代码的先后顺序执行可见性...

2019-04-26 13:53:21 88

转载 安卓Activity四种启动模式解析

前言:在介绍Android中的Activity四种启动模式之前,先说明一下Application,Task和Process的概念Application:Application中,一个应用就是一个组组建的集合(activity ,receiver ,provider ,service )Task:只针对于activity的概念,task是一组关联activity的集合,task是可以跨应用的...

2019-04-26 13:52:14 1576

原创 Android中Service与Thread的对比理解

问题:不知道大家有没有注意过安卓中的thread和service,作用都是执行异步操作,那么我们在实际应用中应该如何选着呢?Service与Thread介绍service:service是安卓四大组件之一,它是一种机制Thread:thread是程序运行的最小单元,它是分配CPU的最小基本单位Service与Thread特点service:1:运行在主线程中,有属于自己的生...

2019-04-15 10:38:04 405

原创 Android Service解析

Service概述Android的Service在主线程中,运行在后台,不依赖于用户界面,不需要显示界面,由于运行在主线程中,故不可做耗时操作,应用场景:后台播放音乐等不需要界面显示的功能服务种类 本地服务(LocalService)依附在主进程上,而不是独立存在的进程,节约内存资源,伴随主进程一同存在或者消亡,不需要aidl接口,绑定方便远程服务(RemoteService)独...

2019-04-13 14:44:27 98

原创 安卓aidl简单解析与使用

aidl概述 aidl(android interface definition language)是安卓接口定义语言,它可以用于单个service与多个程序之间进行跨进程通讯,从而实现多个应用使用单个service,安卓系统开发中较常见 aidl支持数据类型java基本数据类型(重点) List和Map(重点) 元素必须是aidl支持的数据类型 Server 端具体的类里则...

2019-04-09 09:10:51 347

安卓系统开发调试工具整理.docx

安卓开发工具整理,适用安卓系统开发者 1:adb常用命令 2:CPU分析 3:内存分析

2020-04-14

Handler机制及原理探究.pdf

Handler使用简单功能强大,常被用作线程间传递消息的组件,而且还可以用于跨进程。 消息机制背后有包括Looper ,MessageQueue管理和分发消息的实现,同时在Native层也单独实现了一套类 似的机制,接收和处理Native层的消息。Java层和Native层的消息循环是独立运行的,彼此的Message并不会 互通,Native使用epoll机制来实现监听及触发,并向JAVA层提供了接口。 这里从Java层开始深入探究下Handler和消息机制背后实现的原理

2020-02-11

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除