安卓
文章平均质量分 51
Aiden-Y
这个作者很懒,什么都没留下…
展开
-
安卓内存泄漏分析(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 · 164 阅读 · 0 评论 -
通用设计模式整理
目录 单例设计模式 工厂方法模式 抽象工厂模式 建造者模式 原型模式 享元模式 门面模式 适配器模式 装饰模式 策略模式 模板方法模式 观察者模式 责任链模式 单一职责原则 开闭式原则 里氏替换原则 接口隔离原则 依赖倒置原则 系列文章目录提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加例如:第一章 Python 机器学习入门之pandas的使用提示:写完文章后,目录可以自动生成,如何生成可参考右...原创 2021-04-08 15:42:21 · 274 阅读 · 0 评论 -
AndroidTest之Junit测试
什么是单元测试 对最小的可测试单元进行测试和验证 为什么要进行单元测试 单元测试使得我们可以放心修改、重构业务代码,而不用担心修改某处代码后带来的副作用。 单元测试可以帮助我们反思模块划分的合理性,如果一个单元测试写得逻辑非常复杂、或者说一个函数复杂到无法写单测,那就说明模块的抽象有问题。 单元测试使得系统具备更好的可维护性、具备更好的可读性;对于团队的新人来说,阅读系统代码可以从单元测试入手,一点点开始后熟悉系统的逻辑。 sss ...原创 2021-03-29 16:47:30 · 445 阅读 · 0 评论 -
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 · 107 阅读 · 0 评论 -
java异常的捕获及处理
异常的产生以及对于程序的影响 异常是导致程序中断执行的一种指令流,异常一旦出现并且没有进行合理处理的话,那么程序就会中断 异常的处理格式 处理异常的关键字,三个关键字:try,catch,finally try,catch中,异常语句后的不执行,仅限try,catch中的 finally不管是否出现异常,都执行 异常的处理流程 如上图为异常异常结构图 Error和Exception 的区别 Error是指JVM错误,此时程序还未执行,用户不可处理 ...原创 2021-03-19 10:39:04 · 119 阅读 · 0 评论 -
安卓线程池日常总结
线程池主要包括四个组成部分线程池管理器(ThreadPool),创建,管理,添加任务 工作线程(poolWorker),在没有任务的时候等待,有任务的时候执行 任务接口(Task),每个任务必须实现的接口,负责入口,收尾和状态 任务队列(TaskQueue),任务队列,存放任务,缓存任务线程池的作用,限制线程的数量,有效控制效率,线程池的产生主要是防止线程的反复创建和销毁带来的性能问题四种线程池newSingleThreadExecutor(单个的线程,死了新的顶上) newFi.原创 2021-03-05 15:37:21 · 67 阅读 · 0 评论 -
安卓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 · 133 阅读 · 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 · 123 阅读 · 1 评论 -
安卓四种引用类型
强引用 Object obj = new Object(); 只要obj还指向Object对象,Object对象就不会被回收 obj = null; //手动置null 备注说明:只要引用还在,即使内存不足,jvm抛出OutOfMemoryError,也不会去回收,当系统强制回收才会去 软引用 备注说明:当内存充足的时候,软引用对象不会被回收,当内存不足的时候,会去回收软引用对象,软引用对象回收完毕,内存还是不足,才会抛出OutOfMemoryError...原创 2021-03-03 17:19:35 · 227 阅读 · 1 评论 -
java基本数据结构和算法,常见设计模式
数据结构分类:线性和非线性两种线性:数组,链表,队列,栈非线性:树,图,表线性详解:数组:a[i]:查询快,插入删除慢,原因是存在内存中,有角标,直接查询,要插入删除,就得移动空间链表:LinkedList :一个一个从头差,查询慢,添加和删除快,只需要修改索引就ok队列:LinkQueue:先进先出,多线程阻塞队列非常有用栈:先进后出数组与链表的区别:连续和不连续,内存静态分配和内存动态分配算法分类插入(插入和希尔) 交换(冒泡和快排) 选择(...原创 2021-03-01 16:31:07 · 420 阅读 · 0 评论 -
安卓:关于Binder的一些认识和理解
什么是Binder(共享内核空间数据)Binder是Android跨进程通信方式,它实现了IBinder接口,是安卓跨进程通信的主要桥梁,有着速度快,安全性高的特点我们可以通过设计团队想要解决问题的思路去分析Binder的设计如何知道调用了那个进程和哪个进程的函数 客户端是如何将数据发送给服务端,以及服务端如何将数据返回给客户端 如何屏蔽底层通信,让调用像调用本地方法一样便捷Binder机制系统给应用分配的空间有用户空间和内核空间,binder利用内核空间共享数据,对数据进行拷贝,从而原创 2021-03-01 11:36:03 · 285 阅读 · 2 评论 -
安卓:性能之启动时间的优化
产生性能原因,为什么要做优化 可能在App主进程启动阶段或者在主界面启动阶段放了很多初始化其他业务的逻辑,而这些业务落地可能一开始并不需要用到导致,其结果是启动速度慢,需求要求对启动时间有要求,故需要优化其时间 分析制定优化技术路线 分析之前我们需要了解我们要优化的地方,主要是application和mainactivity,下图是启动过程中一个大概的路程图我们可以打印每个环节的执行时间,如下图 统计数据后制定目标 根据打印时间统计耗时,酌情对需要的地方进行优化,制定..原创 2021-02-28 11:41:43 · 152 阅读 · 0 评论 -
安卓:关于内存抖动,内存泄漏,内存溢出
前言:应用开发后期会会对应用做性能优化,此时肯定会伴随内存抖动,内存泄漏,内存溢出等问题,此时就会对这些问题进行排查分析,记录一下这些问题的的本质,产生的原因,处理方法(LeakCanary)本质开发者在前期开发过程中,未能合理的创建和及时的销毁对象,导致应有出现卡顿,内存增加,anr等问题产生原因内存抖动:指在短时间内有大量的对象被创建或者被回收的现象 内存泄漏:一个长生命周期的对象持有了一个短生命周期的对象的引用,无法得到释放 内存溢出:为对象申请不到足够的内存空间了处理方法原创 2021-02-28 11:19:36 · 114 阅读 · 0 评论 -
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 · 1148 阅读 · 0 评论 -
Handler的一些认识和思考
Handler作用:线程之间切换的转换工具,安卓中主要作用是将子线程切换到UI线程,避免UI线程做耗时操作出现ANRHandler代码架构:Handler本身只负责发送和接收消息,在activity启动的时候创建一个loop,背后是一个MessageQueue管理着Message,而Looper循环主体,负责监听Message变化,从MessageQueue取出消息,然后向Handle...原创 2020-01-14 10:23:50 · 162 阅读 · 0 评论