- 博客(34)
- 资源 (10)
- 收藏
- 关注
原创 常见的亮灭屏流程分析
一 . 亮屏主要关键log驱动按键时间??-?? ??:??:??.??? [14082.058160] (0)[70:pmic_thread]kpd: Power Key generate, pressed=1上层按键时间09-25 15:13:07.196667 929 1117 D PhoneWindowManager-interceptKeyBeforeQu
2017-11-21 16:05:19
6665
原创 PowerManagerService 关于亮屏和灭屏解题方法
场景是:打电话的结束后,一段时间内手机不灭屏分析思路:搜索updateUserActivitySummaryLocked,如下所示nextTimeout = -1 updateUserActivitySummaryLocked已经执行结束,后续不会发消息重新执行操作接下通过关键字updateDisplayPowerStateLocked查看是否wakelock。查看信息
2016-11-17 17:32:14
2324
原创 PowerManagerService 关于WackLock 休眠过程
一般我们手机在放置一段时间后,会进行自动灭屏,接下来我们分析下自动灭屏的流程 frameworks\base\services\core\java\com\android\server\power\PowerManagerService.java @Override // Binder call public void goToSleep
2016-11-17 17:15:19
4139
原创 PowerManagerServices关于WackLock的acquire和release的流程
常见的我们在app上写入亮屏和灭屏操作如下PowerManager pm = (PowerManager)getSystemService(POWER_SERVICE);wacklock = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "cn");wacklock.acquire(); //设置保持唤醒if(wackloc
2016-11-17 16:52:59
3325
原创 PowerManagerService开机启动关于WackLock处理的相关流程
Step 1: frameworks\base\services\java\com\android\server\SystemServer.java开启PowerManagerService服务private void startOtherServices() { ... try { // TODO: use boot phase
2016-11-17 13:53:30
2444
原创 学习笔记
I just went through the logs quickly and found:sysTid=13648 is pending for "com.android.bluetooth" sysTid=14943 .In binder_transactions.txt, we can see that proc 14943 had several transactions p
2016-08-05 10:06:00
2173
原创 常见的PKMS问题分析
1.Steps to reproduce the problem:Device updates from an earlier version to any version of Android 6.0.Symptom of the problem:Preloaded apps (e.g. Google Play services or Google Play Store) crash
2016-06-02 16:41:57
1314
原创 常见的WindowManager问题分析
1.UI hang and adb is still alive when running LGE compliant monkey test with DUT for 771 MinutesWindowManagerService主要修改点是在performLayoutAndPlacesurfaceLockedInner(主要用于系统UI刷新)这个方法diff --git a/servic
2016-06-01 15:47:59
3771
1
原创 关于OOM问题分析
1.[FAQ02683]如何将一个app 设置为持久app, 不被low memory kill 关闭[Description]如何将一个app 设置为常住app, 不被low memory kill 关闭[Keyword]app 持久 persistent[Solution]1. 将app 的manifest.xml 中的 application 中添加属性andro
2016-06-01 13:12:55
3474
原创 Android Telephony 框架分析
根据Android系统分层结构对应的Android 通话模块。Java Application应用层---Dailer拨号盘和phone应用Java Framework框架层--Telephony Framework框架层User Libraries系统运行层--RIL层根据对应关系,通过相关的主要的源代码总结及简要说明如下所示:下图所示是Android 打电话应用层流
2016-05-17 14:12:40
2458
原创 Android 代理模式讲解
1.1代理模式介绍代理模式也称为委托模式1.2代理模式的定义为其他对象提供一种代理以控制改对这个对象的访问1.3代理对象的使用场景当无法或不想直接访问某一个对象的时候或者直接访问一个对象存在困难的时候,可以通过一个代理对象来间接访问,以保证客户端的透明性,委托对象与代理对象需要实现相同的接口
2016-05-13 09:34:20
869
转载 Android内存优化之OOM
以下为正文:Android的内存优化是性能优化中很重要的一部分,而避免OOM又是内存优化中比较核心的一点。这是一篇关于内存优化中如何避免OOM的总结性概要文章,内容大多都是和OOM有关的实践总结概要。理解错误或是偏差的地方,还请多包涵指正,谢谢!(一)Android的内存管理机制Google在Android的官网上有这样一篇文章,初步介绍了Android是如何管理应用的
2016-05-11 09:47:19
590
转载 Android Framework --- PackageManager 分析
同样先看一下静态类结构图:大多数情况下,我们通过Activity 中 getPackageManager获取PackagerManager的子类ApplicationPackageManager这个对象.实际上是ApplicationPackageManager包含了一个IPackagerManager.Stub.Proxy的一个对象,IPackagerManager.Stub.P
2016-05-10 16:46:01
654
转载 Android FrameWork——ActivityManager框架
1.ActivityManager是Android框架的一个重要部分,它负责一新ActivityThread进程创建,Activity生命周期的维护,本blog就是着手对ActivityManager框架作一个整体的了解 2.先看一个静态类结构图: 该图摘自 曹文斌blog 上图很清楚地描述了ActivityManager框架的几个
2016-05-10 14:41:05
659
原创 Launcher3的简要分析
Launcher3的常用类分析1.Launcher:Launcher中的主要Activity2.Workspace:抽象的桌面3.CellLayout:Workspace的一个子View4.FoldIcon:文件夹的图标5.BubbleTextView:图标,一个一个快捷方式6.ItemInfo:从快捷方式、文件夹、小部件抽象出来的数据模型7.LauncherModel
2016-05-08 14:33:21
2295
原创 常见问题修改方法
[SYSTEM-SERVER] Avoid a dead lock between ActivityManager and PowerManager services "main" prio=5 tid=1 Blocked | group="main" sCount=1 dsCount=0 obj=0x73fbbfa8 self=0x7ff7b3024000 | sysTid=3219
2016-05-03 10:20:00
2058
原创 Android 的网络管理框架简要分析
Android的网络管理核心是ConnectivityService和NetworkPolicyManagerService服务。ConnectivityService主要提供网络链接管理服务,NetworkManagementService主要提供物理管理服务。 管理各种网络设备---Netd守护进程.#service netd /system/bin/netd# c
2016-04-27 10:56:11
4760
原创 Android的存储系统的简要分析
Android的存储系统主要由SystemServer进程中的MountServer进程中的MountService和Vold进程中的VolimeManager组成,他们管理着系统的存储设备,执行各种操作,包括mount,unmount,format等。1)在Android的存储系统中,MountService是为应用提供服务的Binder类,运行在SystemServer中,而Storage
2016-04-26 13:59:36
1039
原创 开关机动画流程
问题:开关机动画加载黑屏时间过长解决方法[SOLUTION]在开机过程,由于加入开机铃声,在播放动画前需要等待 MediaServer 初始化完成, MediaServer 的初始化可能由于 audio 或者 camera 初始化过慢导致黑屏问题,目前遇到大多都是配置 camera多,导致 camera 初始化阶段 searchbackup sensor 太camera
2016-04-12 13:37:04
1128
转载 Android系统进程间通信Binder机制在应用程序框架层的java接口源代码分析
通过熟悉Android系统的框架知道,Android应用程序之间通信主要是通过JNI调用C/C++语言的Binder运行库来实现java应用程序之间的通信的.其实Binder机制的在应用程序的java接口,主要是通过ServiceManager ,Server,Client三个角色之间的实现.在应用程序中,我们通常把Server实现为Service形式,通过IServiceManager.ad
2016-04-07 17:13:35
1075
原创 PackageManagerService分析
在分析PackageManagerService中main()之前,先分析Settings类.这个类用来保存和PackageManagerService相关的一些设置.先来看看Settings类的方法,代码如下 Settings(Object lock) { this(Environment.getDataDirectory(), lock); } Se
2016-03-29 14:12:42
912
原创 SystemServer分析过程
SystemServer是由zygote进程fork出来的进程.Step 1 如下代码,启动zygote进程以后,SystemServer进程由zygote start出来 service zygote /system/bin/app_process -Xzygote /system/bin --zygote --start-system-server soc
2016-03-25 14:59:53
2361
转载 zygote启动过程分析
在Android中,所有的android进程都是init的子孙进程,zygote进程也不例外,也是由init进程fork出来的.接下来我们可以看下init进程在读取init.rc (system/core/rootdir/init.rc)创建zgote的过程.service zygote /system/bin/app_process -Xzygote /system/bin --zygo
2016-03-24 16:02:47
1395
原创 Android系统在新进程中启动自定义服务过程(startService)的原理分析
从图中可以看出,Activity继承了ContextWrapper类,而在ContextWrapper类中,实现了startService函数。在ContextWrapper类中,有一个成员变量mBase,它是一个ContextImpl实例,而ContextImpl类和ContextWrapper类一样继承于Context类,ContextWrapper类的startService函数最终过调用C
2016-03-08 09:44:22
681
转载 谈谈Android的IPC(进程间通信)机制
答:http://blog.youkuaiyun.com/luoshengyang/article/details/6618363Android系统中,每一个应用程序都是由一些Activity和Service组成的,这些Activity和Service有可能运行在同一个进程中,也有可能运行在不同的进程中,android的IPC机制也就是Binder机制,Android系统是基于Linux内核的,而Linu
2016-03-01 17:36:21
2453
转载 android之JNI开发步骤总结
Jni的开发步骤。打开eclipse,新建工程名为testJni。在activity中添加以下代码{code}package com.xzw.jni;import android.os.Bundle;import android.app.Activity;import android.view.Menu;import android.view.MenuItem;
2016-03-01 14:07:19
762
原创 常见的UIWDT bug分析案例(1)
Step 1: According the log: android.display- waiting to lock tid=13 {code} "android.fg" prio=5 tid=13 Blocked | group="main" sCount=1 dsCount=0 obj=0x12cce900 self=0x6d2b8c00 |
2016-02-22 14:37:18
5156
原创 framework层bug--USB tethering is not getting enabled
问题:USB tethering is not getting enabled.步骤:Settings-> More->Tethering & portable hotspot->USB tethering//修改代码路径//当启用USB数据连线,先断开uevent,从kernel处接受数据。这但是时间太短uevent接收不到。因此,延时断开uevent到1.5秒。//framew
2016-02-22 11:10:34
703
原创 java 常见的2种单例模式
//懒汉式,就是创建一个class LaySingleton{ public static LaySingleton instanle = null; public LaySingleton() { // TODO Auto-generated constructor stub } public static synchro
2016-02-22 10:38:55
500
原创 java中向上转型和向下转型
转型是在继承的基础上而言的,继承是面向对象语言中,代码复用的一种机制,通过继承,子类可以复用父类的功能,如果父类不能满足当前子类的需求,则子类可以重写父类中的方法来加以扩展。向上转型:子类引用的对象转换为父类类型称为向上转型。通俗地说就是是将子类对象转为父类对象。此处父类对象可以是接口向下转型:父类引用的对象转换为子类类型称为向下转型。如以下案例public class A {
2016-02-22 09:58:35
2170
原创 Android 5.0 CTS 代码修改日记
1.android.os.cts.BuildVersionTest#testReleaseVersion CTS Log 04-24 19:08:43.460 11050 11065 I TestRunner: failed: testReleaseVersion(android.os.cts.BuildVersionTest)04-24 19:08:43.460 11050 1106
2015-06-30 17:02:52
3900
原创 Java多线程编程
1.线程和进程线程:程序中单独顺序的控制流 线程本身依靠程序进行运行 线程是程序中的顺序控制流,只能使用分配给程序的资源和环境进程:执行中程序 一个进程可以包含一个和多个线程 一个线程至少包含一个线程2.线程的实现 在java中,线程实现的方法有2种 1)继承Thread类
2015-05-20 10:40:12
458
原创 对于framework的目录结构分析以及简单的添加一个java层服务
1.framework/base/packages/ 这个目录下面定义了相关的apk 比如SystemUI SettingPrivoder BackupRestoreConfirmation等相关的apk2.framework/base/ Services 定义了相关系统服务3.framwork/webview 主要是浏览器相关的数据定义4.framework/base/ po
2015-05-03 13:55:44
1420
原创 Android 4.4 CTS 代码修改日记
1、直接设置问题estUnknownSourcesOffByDefaultfailjunit.framework.AssertionFailedError: Deviceshould not ship with 'Unknown Sources' enabled by default.expected: butwas: atandroid.provide
2014-12-05 11:35:24
7339
SharedPreferences数据存储
2012-11-24
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人