Vane's Blog

Deadlocks and ANRs(非原创)

In this article we’re going to have a look at how to analyse a real-world Application Not Responding (ANR) trace, determine the cause (which turns out to be a deadlock in one of the libraries we’re...

Android ANR问题总结(非原创)

1 概述 ANR(Application Not responding),是指应用程序未响应,Android系统对于一些事件需要在一定的时间范围内完成,如果超过预定时间能未能得到有效响应或者响应时间过长,都会造成ANR。 ANR:Application Not Responding,即应用无响应 为用户在主线程长时间被阻塞 Android 系统自身提供的一种检测机制 2...

设计模式之单例模式

1 概述 单例模式是应用最广泛的模式之一,该模式确保某各类只有一个实例对象,而且自行实例化并向整个系统提供这个实例。 2 使用场景 确保各类有且只有一个对象的场景,避免产生多个对象小豪过多的资源,或者某种类型的对象只应该有且只有一个。例如,创建一个对象需要消耗的资源过多,如要访问的IO和数据库等资源,这时就要考虑使用单例模式。 3 UML类图 角色介绍: Client:...

面向对象六大原则

1 概述 在设计面向对象的程序时,如果能遵循一些指导原则取设计,那么所设计的软件架构的灵活性和代码的可读性将会大大的提高,常用的面向对象原则有:单一职责原则、开闭原则、里氏替换原则、依赖倒置原则、接口隔离原则和迪米特原则等。 2 单一职责原则 就一个类而言,应该仅有一个引起它变化的原因。简单来说,一个类中应该是一组相关性很高的函数、数据的封装。但这个原则并不是总是那么清晰,很多时候一个...

Android O系统启动流程--ActivityManagerService篇

frameworks/base/services/java/com/android/server/SystemServer.java SystemServiceManager.java frameworks/base/services/java/com/android/server/am/ActivityManag...

Android O系统启动流程--SystemServer篇二

frameworks/base/services/java/com/android/server/SystemServer.java 1 概述 上篇Zygote经过RuntimeInit最后跳转到SystemServer的main方法,实现了 system_server进程 的初步分析,接下来我们从SystemServer的main()开始分析system_ser...

Android O系统启动流程--SystemServer篇一

frameworks/base/core/jni/ - com_android_internal_os_Zygote.cpp - AndroidRuntime.cpp frameworks/base/core/java/com/android/internal/os/ZygoteInit.java -ZygoteServer.java ...

Android O系统启动流程--zygote篇

system/core/init init.cpp init.rc service.cpp builtins.cpp frameworks/base/cmds/app_process/app_main.cpp frameworks/base/core/jni/AndroidRuntime.cpp frameworks/bas...

Android O系统启动流程--init篇(最后阶段)

system/core/init init.cpp init_parser.cpp init.rc service.cpp action.cpp builtins.cpp 1 概述 前面两篇博客已经介绍了init启动的第一和第二阶段,接下来看下 init启动的最后阶段:解析init.rc文件相关的工作。 2 主线代码 ...

Android O系统启动流程--init篇(第二阶段)

system/core/init init.cpp property_service.cpp signal_handler.cpp service.cpp action.cpp 1 概述 在前一篇博客中, 分析了init进程第一阶段(内核态)的流程。 在本篇博客中,我们来看看init进程第二阶段(用户态)的工作。 2 主线代...