随笔分类 - android
摘要:1, 感知卡顿 用户对卡顿的感知, 主要来源于界面的刷新. 而界面的性能主要是依赖于设备的UI渲染性能. 如果我们的UI设计过于复杂, 或是实现不够好, 设备又不给力, 界面就会像卡住了一样, 给用户卡顿的感觉. 1.1 16ms原则 在剖析卡顿的原因之前, 我们先来了解下Android中著名的"1
        阅读全文
                
摘要:在实际情况中,当Android项目的用户量特别大时候,一些细小的问题也会被放大,ANR问题就是一个典型的例子。 一些ANR问题只会发生在用户实际使用的情景,当系统资源比较紧张等一些特殊情况下才会遇到,而这些ANR问题有很大一部分是因为我们的代码不合理导致,这就需要我们定位问题,修复问题,并且在以后的
        阅读全文
                
摘要:1, 你碰到ANR了吗 在App使用过程中, 你可能遇到过这样的情况: ANR 恭喜你, 这就是传说中的ANR. 1.1 何为ANR ANR全名Application Not Responding, 也就是"应用无响应". 当操作在一段时间内系统无法处理时, 系统层面会弹出上图那样的ANR对话框. 
        阅读全文
                
摘要:WebView造成内存泄露 关于WebView的内存泄露,因为WebView在加载网页后会长期占用内存而不能被释放,因此我们在Activity销毁后要调用它的destory()方法来销毁它以释放内存。 另外在查阅WebView内存泄露相关资料时看到这种情况: Webview下面的Callback持有
        阅读全文
                
摘要:资源未关闭或释放导致内存泄露 在使用IO、File流或者Sqlite、Cursor等资源时要及时关闭。这些资源在进行读写操作时通常都使用了缓冲,如果及时不关闭,这些缓冲对象就会一直被占用而得不到释放,以致发生内存泄露。因此我们在不需要使用它们的时候就及时关闭,以便缓冲能及时得到释放,从而避免内存泄露
        阅读全文
                
摘要:android 中有很多注册和反注册,由于在注册后,上下文自身会被持久化的观察者列表所持有,如果不进行反注册,就会造成内存泄漏 内存泄漏1:Sensor Manager 代码如下: MainActivity.java 为什么? 通过Context调用getSystemService获取系统服务,这些
        阅读全文
                
摘要:线程持久化 Java中的Thread有一个特点就是她们都是直接被GC Root所引用,也就是说Dalvik虚拟机对所有被激活状态的线程都是持有强引用,导致GC永远都无法回收掉这些线程对象,除非线程被手动停止并置为null或者用户直接kill进程操作。所以当使用线程时,一定要考虑在Activity退出
        阅读全文
                
摘要:1,内存泄漏到本质是该释放的对象被持久化的对象引用了,造成持久化的常见情况有1,静态持久化 2,线程持久化 线程持久化 因为存活的线程是有dvk虚拟久直接持有,所以存活的线程都是持久化的 内存泄漏1:静态Activities(static Activities) 代码如下: MainActivity
        阅读全文
                
摘要:在Android性能优化第(一)篇 基本概念中讲了JAVA的四大引用,讲了一下GCRoot,第二篇Memory Monitor检测内存泄露仅仅说了Menmery Monitor的使用,这篇博客谈一下MAT来寻找内存泄露,相对来说,Memory Monitor没有MAT强大,但是在开始介绍MAT之前,
        阅读全文
                
摘要:之前碰到的OOM问题,终于很直白的呈现在我的眼前:我尝试了MAT,但是发现不怎么会用。直到今天终于发现了这个新工具: 当我们的App中存在内存泄露时会在通知栏弹出通知: 当点击该通知时,会跳转到具体的页面,展示出Leak的引用路径,如下图所示: LeakCanary 可以用更加直白的方式将内存泄露展
        阅读全文
                
摘要:上篇说了一些性能优化的理论部分,主要是回顾一下,有了理论,小平同志又讲了,实践是检验真理的唯一标准,对于内存泄露的问题,现在通过Android Studio自带工具Memory Monitor 检测出来。性能优化的重要性不需要在强调,但是要强调一下,我并不是一个老司机,嘿嘿!没用过这个工具的,请睁大
        阅读全文
                
摘要:1, Dalvik & ART Android在4.4之前一直使用的Dalvik虚拟机作为App的运行VM的, 4.4中引入了ART作为开发者备选, 5.0起正式将ART作为默认VM了. 我们首先来简单了解下二者: 1.1 Dalvik 如果只是想简单了解, 个人觉得百度百科上这个Dalvik的介绍
        阅读全文
                
摘要:关于Parcel的使用 在分析Parcel之前,首先按照分析流程,介绍下关于Parcel的相关常规使用。 首先是关于Parcel的获取: 额,这感觉似曾相识啊,我们这里大胆猜测Parcel的初始化也是由其对象池进行初始化的。在得到了Parcel对象之后,下一步的工作。嗯,我想起来,应该介绍下Parc
        阅读全文
                
摘要:Messenger可以理解为一个是用于发送消息的一个类用法也很多,这里主要分析一下再跨进程的情况下Messenger的实现流程与源码分析。相信结合前面两篇关于aidl解析文章能够更好的对aidl有一个认识。(Android进阶笔记:AIDL内部实现详解 (一)、Android进阶笔记:AIDL内部实
        阅读全文
                
摘要:一. 什么是多进程? 多进程就是多个进程的意思,那么什么是进程呢? 当一个应用在开始运行时,系统会为它创建一个进程,一个应用默认只有一个进程,这个进程(主进程)的名称就是应用的包名。 进程的特点: 进程是系统资源和分配的基本单位,而线程是调度的基本单位。 每个进程都有自己独立的资源和内存空间 其它进
        阅读全文
                
摘要:首先我并不推荐也不喜欢手机应用通过各种手段后台保活,但是当产品经理确定一定以及肯定地提出了这个需求,活着应用有着必须常驻后台的理由,也就只有硬着头皮去与各个手机的后台管理机制做斗争了。 背景:因为开发的应用属于医疗监测类型,而且监测着对于病人十分重要的一项身体指标,所以需求为应用不仅要常驻后台,更要
        阅读全文
                
摘要:前言 忙碌的工作终于可以停息一段时间了,最近突然有一个想法,就是自己写一个app,所以找了一些合适开源控件,这样更加省时,再此分享给大家,希望能对大家有帮助,此博文介绍的都是UI上面的框架,接下来会有其他的开源框架(如:HTTP框架、DB框架)。 1.Side-Menu.Android 分类侧滑菜单
        阅读全文
                
摘要:2017.12.21 1.仿QQ说说发图片选择框架 https://github.com/yaozs/ImageShowPicker 2.炫酷开屏动画框架 https://github.com/JoshuaRogue/FancyView 3.防京东,支付宝密码键盘和密码输入框 https://git
        阅读全文
                
摘要:有时候我们有这样一个需求,监听html中控件的一些事件。例如点击html中某个按钮,跳转到别的activity,复制某段文本。 首先是对webview的设置: 创建JavaScriptinterface类: 高版本中在允许被js调用的方法加上@JavascriptInterface注解 然后使用we
        阅读全文
                
 
                    
                
 浙公网安备 33010602011771号
浙公网安备 33010602011771号