pxfile Blog

Thinking will not overcome fear but action will.

谈谈classloader

谈谈classloader

如何加载合适的资源

Android系统如何加载合适的资源 Android源码分析-资源加载机制 在activity内部访问资源(字符串,图片等)是很简单的,只要getResources然后就可以得到Resources对象,有了Resources对象就可以访问各种资源了。 不同的Context得到的都是同一份资源。 得到资源的方式为context.getResources,而真正的实现位于ContextI...

如何保持应用的稳定性

如何保持应用的稳定性 说到Android系统手机,大部分人的印象是用了一段时间就变得有点卡顿,有些程序在运行期间莫名其妙的出现崩溃,打开系统文件夹一看,发现多了很多文件,然后用手机管家 APP 不断地进行清理优化 ,才感觉运行速度稍微提高了点,就算手机在各种性能跑分软件面前分数遥遥领先,还是感觉无论有多大的内存空间都远远不够用。相信每个使用Android系统的用户都有过以上类似经历,确实,...

多进程使用及其带来的问题

Android多进程使用及其带来的问题 1.Android程序如何使用多进程 根据Processes and Threads,默认情况下,一个Android程序的所有组件都是在一个进程中执行的,该进程的名字就是程序的包名。同时,Android也允许开发者将程序的一些组件在其他进程中执行。四大组件均支持android:process属性,我们可以设置该属性的名字,将组件运行在指定的进程。参...

多线程同步

JAVA/Android 多线程实现方式及并发与同步 概述 说到线程,就不得不先说线程和进程的关系,这里先简单解释一下,进程是系统的执行单位,一般一个应用程序即是一个进程,程序启动时系统默认有一个主线程,即是UI线程,我们知道不能做耗时任务,否则ANR程序无响应。这时需要借助子线程实现,即多线程。由于线程是系统CPU的最小单位,用多线程其实就是为了更好的利用cpu的资源。 多线程实现方...

图片性能处理的一些总结

图片性能处理的一些总结 在做图片处理之前,我们需要知道图片的内存存储: 在Android 2.3.3(API Level 10)以及之前,Bitmap的backing pixel 数据存储在native memory, 与Bitmap本身是分开的,Bitmap本身存储在dalvik heap 中。导致其pixel数据不能判断是否还需要使用,不能及时释放,容易引起OOM错误。 从Androi...

垃圾回收

垃圾回收 垃圾回收,结合具体案例分析(比如onDraw中为什么不能频繁new对象) android–垃圾回收与内存优化 执行GC操作的时候,任何线程的任何操作都会需要暂停,等待GC操作完成之后,其他操作才能够继续运行。 通常来说,单个的GC并不会占用太多时间,但是大量不停的GC操作则会显著占用帧间隔时间(16ms)。如果在帧间隔时间里面做了过多的GC操作,那么自然其他类似计算,渲染等操...

内部类

Android 内部类 静态内部类、内部类、匿名内部类,为什么内部类会持有外部类的引用?持有的引用是this?还是其它? 静态内部类:使用static修饰的内部类 内部类:就是在某个类的内部又定义了一个类,内部类所嵌入的类称为外部类 匿名内部类:使用new生成的内部类 因为内部类的产生依赖于外部类,持有的引用是类...

Leakedcanary原理

面试题-LeakedCanary原理 如果检测到有内存泄漏,手机桌面会多出一个图标,点进去查看可以看见泄漏信息。 图-1 内存泄漏示意图 检测原理 监听 ActivityRefWatcher中,注册Activity生命周期监听接口,当Activity onDestroy()被调用时,将当前Activity加入内存泄漏监听队列; 在Android中,当一个Activity走...

Android Webview的性能优化

WebView的性能优化 于是我们找到了“为什么WebView总是很慢”的原因之一: 在浏览器中,我们输入地址时(甚至在之前),浏览器就可以开始加载页面。 而在客户端中,客户端需要先花费时间初始化WebView完成后,才开始加载。 而这段时间,由于WebView还不存在,所有后续的过程是完全阻塞的。 怎么优化 由于这段过程发生在native的代码中,单纯靠前端代码是无法...