OS-> Android框架、运行时
yeqishi
博观而约取,厚积而薄发
展开
-
Android内存管理与泄漏场景分析
前言这次分三篇文章分享Android内存管理与检测的办法,分别是内存管理概要与泄漏的原理,内存泄漏进程定位,内存泄漏进程内部代码段定位。本来还有几项如在lmkd基础上设计的增强型内存管理机制,Native进程泄漏定位方法等,由于涉及到专利部分所以就不公开了。要分享的三篇文章是我在实际项目中使用并不断改善总结的,相信大家看懂之后会有很大用处。目录1. 背景介绍1.1 JVM内存...原创 2019-03-13 10:12:05 · 406 阅读 · 0 评论 -
Android wakelock机制
Wake Lock是一种锁的机制, 只要有人拿着这个锁,系统就无法进入休眠,可以被用户态程序和内核获得. 这个锁可以是有超时的或者是没有超时的,超时的锁会在时间过去以后自动解锁.如果没有锁了或者超时了, 内核就会启动休眠的那套机制来进入休眠.PowerManager.WakeLock有加锁和解锁两种状态,加锁的方式有两种,一种是永久的锁住,这样的锁除非显式的放开,是不会解锁转载 2013-03-07 19:34:07 · 1150 阅读 · 0 评论 -
Android的framework层音量控制原理分析--hot(key)处理 .
Android.media.AudioManager中包含了对android.media.AudioService的跨进程AIDL调用封装。正常处理过程:1.调整音量是通过AudioManager间接调用AudioService.adjustStreamVolume方法来完成逻辑处理;2.AudioService调用VolumePanel画出音量调整界面,并发送音量变动广播消息,3转载 2012-05-25 01:19:02 · 1352 阅读 · 0 评论 -
android 自定义progressDialog实现
我们在项目中经常会遇到这样一个应用场景:执行某个耗时操作时,为了安抚用户等待的烦躁心情我们一般会使用进度条之类的空间,在android中让大家最容易想到的就是progressbar或者progressDialog,区别在于前者是一个控件,后者是对话框。由于一些需求在弹出进度条时不希望用户能够操作其他控件,所以只能使用progressDialog,这个时候有遇到了一个问题,我不想要progressD转载 2012-06-01 01:31:54 · 6274 阅读 · 2 评论 -
android手机时间自动同步
在Android2.3.4系统中,Settings->Date & time->Automatic项打上后,时间会通过网络进行同步,而Android默认使用的是NITZ来获取移动网络时间,需要有移动网络服务商的支持才能使用,而有些Android产品只支持WIFI等无线网络,而不支持移动网络,此时就需要采用SNTP方式来获取网络时间进行同步了,相应需要修改到的文件为frameworks/base/t转载 2012-03-22 08:58:18 · 3125 阅读 · 1 评论 -
Android增加SNTP网络时间同步功能
因为android的网络时间同步只支持NITZ协议 可能是国外的运营商这些都是肯定有的 所以在中国这个网络时间同步就显得很不足 因为国内很多基站都不支持NITZ 我们如果要让这个网络时间同步功能能够和他的名字对等 就得加上补救措施 用SNTP来补充做时间校对。1.监听网络是不是连接上了packages/apps/Settings/AndroidManifest.xml原创 2012-03-27 22:55:00 · 7263 阅读 · 0 评论 -
鼠标点击事件按钮和触电坐标
xml,什么的布局文件基本没有只有java文件中的代码如下:package com.button;import android.app.Activity;import android.os.Bundle;import android.view.KeyEvent;import android.view.MotionEvent;import android.view.View;转载 2012-03-03 22:33:28 · 1576 阅读 · 0 评论 -
Android Launcher全面剖析
原创地址http://blog.csdn.net/andy_android/article/details/6966073感谢原创 Android Launcher全面剖析 首先来说说我为什么写这篇文章,最近公司要我负责搞Launcher,网上一查这方面的资料比较少,转载 2012-03-03 22:23:51 · 2131 阅读 · 1 评论 -
Android自动化测试初探(一): 捕获Activity上的Element
第一部分:前言 Android系统下应用程序的测试现在应该还算是个新的领域,网上关于这方面的资料很多都是基于白盒测试的,一般都是基于JUnit框架和Android SDK中android.test等命名空间下的内容进行,但是有一个前提,那就是必须要有应用程序的源代码以提供测试接入点,但是这在很多软件公司中是不现实的。很多测试工程师做的工作是完全黑盒,基本接触不到源代码,白盒测试大部分也是转载 2012-02-28 15:34:43 · 810 阅读 · 0 评论 -
Android自动化测试初探(四): 模拟键盘鼠标事件(Socket+Instrumentation实现)
通过Socket + Instrumentation实现模拟键盘鼠标事件主要通过以下三个部分组成: * Socket编程:实现PC和Emulator通讯,并进行循环监听 * Service服务:将Socket的监听程序放在Service中,从而达到后台运行的目的。这里要说明的是启动服务有两种方式,bindService和startService,两者的区别是,前者会使启动的Se转载 2012-02-28 15:32:34 · 908 阅读 · 0 评论 -
Android自动化测试初探(三): 架构实现
前两节讲了用Android SDK自带的tool-hierarchyviewer来捕获Activity上Element,并分析了其中的原理。对于要实现GUI自动化,还有哪些工作没有完成呢? * Invoke界面上的Element,如点击按钮,在文本框中输入内容等 * Press手机自身所有的按键,如HOME键,Menu键,左右上下方向键,通话键,挂机键等 * 判断测试结转载 2012-02-28 15:33:46 · 748 阅读 · 0 评论 -
Android自动化测试初探(五): 再述模拟键盘鼠标事件(adb shell 实现)
命令格式2:adb shell sendevent [device] [type] [code] [value] 如: adb shell sendevent /dev/input/event0 1 229 1 代表按下按下menu键 adb shell sendevent /dev/input/event0 1 229 0 代表按下松开menu键 说明:上述的命令需组合使用转载 2012-02-28 15:31:54 · 1245 阅读 · 0 评论 -
Android自动化测试初探(二): Hierarchyviewer 捕获Element的实现原理
Android SDK tools下的工具hierarchyviewer可以展现Device上的Element的层次分布和自身属性,其核心函数之一就是LoadScene,研究后发现其实现方法是向Device的4939端口通过socket的方式发送了一个DUMP的命令,Device会自动处理该命令并将所有Screen上的Element层次结构和属性一并发回,实现代码如下:publ转载 2012-02-28 15:34:19 · 757 阅读 · 0 评论 -
\Home\bin\Home.apk installed on device
在引用androd例子时,运行程序报:\Home\bin\Home.apk installed on device错误,解决办法,修改manifest文件里的内容其他apk提示类似错误也可以实验这么修改,launcher的这个错误是可以修改的http://schemas.android.com/apk/res/android" package="com.example.android原创 2012-02-19 16:49:54 · 4879 阅读 · 3 评论 -
Android的MediaPlayer架构介绍
(年度祝贺篇,谨以此篇文章,预祝新年里android发展更好)本文主要介绍的是Android中很重要也最为复杂的媒体播放器(MediaPlayer)部分的架构。对于Android这样一个完整又相对复杂的系统,一个MediaPlayer功能的实现不在其具体的功能,而是具体功能如何适应Android系统Android MediaPlayer的主要具体实现在OpenCore的Player中,这部分不转载 2011-12-31 20:06:46 · 632 阅读 · 0 评论 -
android 休眠与唤醒II
Android 休眠(suspend)在一个打过android补丁的内核中, state_store()函数会走另外一条路,会进入到request_suspend_state()中, 这个文件在earlysuspend.c中. 这些功能都 是android系统加的, 后面会对earlysuspend和late resume 进行介绍.涉及到的文件:linux_source/kernel转载 2011-12-30 15:48:36 · 973 阅读 · 0 评论 -
Android Remote Service
转自http://blog.csdn.net/u0fly/article/details/5907362,并补充了main.xml文件src └── com └── fly ├── IRemoteService.aidl ├── RemoteServiceActivity.java └──转载 2013-03-21 09:21:27 · 1134 阅读 · 0 评论 -
framework添加服务(实例)
前一篇讲了android添加服务的步骤,今天看到了一个实例,简单明了,相信有所帮助!1. 创建frameworks\base\services\jni\com_android_server_notifyservice.cpp static JNINativeMethod method_table[] = { /* name, signature,转载 2013-04-27 17:36:39 · 1385 阅读 · 0 评论 -
TCP/IP传输层,你懂多少?
远程地址:http://java-mzd.iteye.com/blog/1007577,写的很好,建议到原创地址欣赏原文,此处仅作备份。 1. 传输层的主要功能是什么?2. 传输层如何区分不同应用程序的数据流?3. 传输层有哪些协议?4. 什么是UDP协议?5. 为什么有了UDP,还需要TCP?6. 什么是TCP协议?7. 怎么理解协议和程序?8. TC转载 2013-12-15 20:38:14 · 986 阅读 · 0 评论 -
Android Java进程动态注入Hack技术
前言 Android Java进程注入Hack技术可以一定程度上弥补离线日志方式下问题分析方法的不足,即可以在离线运行条件下动态注入故障进程,实时获取进程内部运行时数据,也可以为热修复、调试提供技术基础。 Android系统在加载启动一个apk应用时,ActivityManagerService服务(后续简称AMS)会首先确认应用包名、用户名、签名信息以及目标进...原创 2019-03-12 07:49:30 · 1578 阅读 · 0 评论 -
Android Java进程memleak自动化检测与堆转储方法
前言由于前一篇文章讲了如何在Java应用集群中高效找出内存泄漏进程的方法,现在开始分享Java进程memleak自动化检测与堆转储方法。在Java进程集群中,某一个或几个Java进程内存泄漏场景经常是很隐蔽的,这可能需要一系列的进程间业务动作才能暴露出来。同样,在某一个存在内存泄漏的Java进程内部,如果直接研究代码是否存在内存泄漏,这对理论基础和实际经验要求很高,而在高强度的实际场景测试...原创 2019-03-15 07:47:50 · 807 阅读 · 0 评论 -
Android Java进程集群内存泄漏定位
前言本篇文章讲述如何在Java进程集群中有效率的找到内存泄漏的进程,通过完成这一步,才能进行下一步进程内部代码段/对象内存泄漏的位置点。由于产品化的Android系统中会集成数量众多的App应用集群,通过AndroidStudio DDMS逐个排查应用泄漏问题是很难的,工作效率低,而且泄漏的场景也并非常规模式能够复现。实际上更多的情况是测试使用中出现了严重的内存泄漏情况,而此时系统是离线状...原创 2019-03-14 06:56:39 · 270 阅读 · 0 评论 -
Android学习 StateMachine与State模式
目录(?)[-]转自:http://www.cnblogs.com/bastard/archive/2012/06/05/2536258.html Android学习 StateMachine与State模式一 State模式意图: 允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的类。(Objects for States)...转载 2015-06-14 14:52:03 · 1715 阅读 · 0 评论 -
Android组件、ActivityManagerService、进程管理框架分析
前言 本文是在项目实践结束后按照Linux进程、线程基础原理到应用组件的工作流程进行个人总结而成的。其中Linux进程、线程部分配有额外的例程和说明资料,有需要的朋友可以Email我,这里就不插入这部分资料了,同时这些内容在网上也很多可以自行查询。最期望的,希望分享的这篇文章能给开发者带来一定的用处,文章中若有错漏之处,欢迎大家的反馈和讨论。一. ActivityManager...原创 2019-03-06 09:17:40 · 1635 阅读 · 0 评论 -
Android Ethernet从上至下解析
最近遇到不少框架问题,比如关于网口的,开机后拔掉有线网,状态栏和设置项中有线网显示图标不会更新,还有双网口的需求,下面就带着这个问题,以跟踪网络状态问题为引线,本篇将贯穿分析Ethernet从上至下的框架结构。因能力和时间有限,文中有分析不到位的地方,十分欢迎大侠们拍砖。首先看下应用层网络监听相关的app网络监听一:设置packages/apps/Settings/src/com...原创 2015-08-27 23:06:00 · 10136 阅读 · 4 评论 -
Android Watchdog框架解析、应用与改造(上)
简言: frameworks/base/services/java/com/android/server/ 系统框架服务目录下,可以看到名为Watchdog.java文件,这是一个软件看门狗的实现,其主要目的为检测系统锁的持有情况,若发生超时持有锁情况,则视为系统锁死,将作出终止或者继续等待等处理。 而最近我还是遇到系统在开机启动时一直停留在开机动画界面,从trace...原创 2015-12-11 12:23:44 · 5314 阅读 · 0 评论 -
Android Watchdog框架解析、应用与改造(下)
接着上一篇WTD的介绍 ,看下实际死锁情况下,WTD的功能与改造。最近遇见Android开机一直停留在动画界面,查看trace文件发现死锁了,简要信息如下:"main" prio=5 tid=1 MONITOR | group="main" sCount=1 dsCount=0 obj=0x4c20f360 self=0x71e1ade0 | sysTid=519 nice...原创 2015-12-11 14:17:12 · 2727 阅读 · 0 评论 -
关于android中使用weight属性实现多个layou比例布局的计算方法
关于使用layout的weight比重进行线性布局的解释原创 2014-11-07 17:18:36 · 2050 阅读 · 0 评论 -
Android Camera TakePicture过程分析
Camera子系统采用C/S架构,客户端和服务端在两个不同的进程当中,它们使用android中的binder机制进行通信,本系列文章将从Android Camera应用程序到硬件抽象的实现一步一步对照相机系统进行分析,首先从CameraService初始化过程着手,然后从上层APP打开照相机->进行preview->拍照以及聚焦等功能的实现全面的学习照相机子系统1、CameraServ原创 2014-11-22 10:58:44 · 4097 阅读 · 0 评论 -
V4L2框架分析学习
Author:CJOKContact:cjok.liao#gmail.comSinaWeibo:@廖野cjok1、概述Video4Linux2是Linux内核中关于视频设备的内核驱动框架,为上层的访问底层的视频设备提供了统一的接口。凡是内核中的子系统都有抽象底层硬件的差异,为上层提供统一的接口和提取出公共代码避免代码冗余等好处。就像公司的老板一般都不会直接找转载 2014-08-07 14:15:23 · 908 阅读 · 0 评论 -
(老罗)Android帧缓冲区(Frame Buffer)硬件抽象层(HAL)模块Gralloc的实现原理分析
前面在介绍Android系统的开机画面时提到,Android设备的显示屏被抽象为一个帧缓冲区,而Android系统中的SurfaceFlinger服务就是通过向这个帧缓冲区写入内容来绘制应用程序的用户界面的。Android系统在硬件抽象层中提供了一个Gralloc模块,封装了对帧缓冲区的所有访问操作。本文将详细分析Gralloc模块的实现,为后续分析SurfaceFlinger服务的实现打下基础。转载 2014-08-03 16:48:59 · 1111 阅读 · 0 评论 -
Android dumpsys 命令解析
Android has an interesting command called dumpsys to dump some system information. Even described on adb manual I think that some points should be reinforced. In order to get the complete status j转载 2013-12-14 09:44:18 · 1071 阅读 · 0 评论 -
Android网络编程实践之旅(二):基于Socket的网络通信
Socket(套接字)是一种通信机制,可以实现单机或跨网络进行通信,其创建需要明确的区分C(客户端)/S(服务器端),支持多个客户端连接到同一个服务器。有两种传输模式:1)、面向连接的传输:基于TCP协议,可靠性高,但效率低;2)、面向无连接的传输:基于UDP协议,可靠性低,但效率高; Android中,直接采用Socket通信应该是我们遇到的最低级的网络运用。尽管已经作转载 2013-12-15 20:00:38 · 1041 阅读 · 0 评论 -
Android网络编程实践之旅(二):基于Socket的网络通信
Socket(套接字)是一种通信机制,可以实现单机或跨网络进行通信,其创建需要明确的区分C(客户端)/S(服务器端),支持多个客户端连接到同一个服务器。有两种传输模式:1)、面向连接的传输:基于TCP协议,可靠性高,但效率低;2)、面向无连接的传输:基于UDP协议,可靠性低,但效率高; Android中,直接采用Socket通信应该是我们遇到的最低级的网络运用。尽管已经作转载 2013-12-15 19:58:10 · 1047 阅读 · 0 评论 -
android 睡眠与唤醒I
版本信息Linux Kernel: v2.6.28Android: v2.0对于休眠(suspend)的简单介绍在Linux中,休眠主要分三个主要的步骤:冻结用户态进程和内核态任务调用注册的设备的suspend的回调函数顺序是按照注册顺序休眠核心设备和使CPU进入休眠态冻结进程是内核把进程列表中所有的进程的状态都设置为停止,并且保存下所有进程的上下文. 当这些进程被转载 2011-12-30 15:48:01 · 915 阅读 · 0 评论 -
android 模拟器键盘控制
在android模拟器上测试程序时,发现需要旋转屏幕,不知道怎么旋转,GG找到了,CTRL+F11,先总结几个比较常用的快捷键:Home键(小房子键)在键盘上映射的就是home键,这倒是很好记。Menu键用于打开菜单的按键,在键盘上映射的是F2键,PgUp键同样可以。另外,看英文原文的意思,貌似这个键在某些机型上会被设计为左软件(left softkey)Start键这个键转载 2012-01-28 09:27:57 · 2825 阅读 · 0 评论 -
httpurlconnection servlet
通过从Properties文件中读取设定信息,构造Http头,向Servlet发Post请求,并且接收Servlet的结果,下面给出程序的大概结构:import java.net.*;import java.io.*;public class testPost { public static void main() {URLurl = null;...转载 2011-10-15 16:26:19 · 799 阅读 · 0 评论 -
URLConnection 详细
通信链接。程序可以通过URLConnection实例向该URL发送请求、读取URL引用的资源。通常创建一个和 URL的连接,并发送请求、读取此URL引用的资源需要如下几个步骤:通过调用URL对象openConnection()方法来创建URLConnection对象。设置URLConnection的参数和普通请求属性。如果只是发送GET方式请求,使用connect方法建立和远...转载 2011-10-15 16:22:35 · 8414 阅读 · 0 评论 -
Android解析XML文件
给大家分享一下XmlPullParser 的解析代码。这里我只给了读的代码,也许你会说我太懒了吧,为什么不给写的代码呢?我想在android的开发里,大家保存数据用的是Sqlite吧,哈哈。针对xml的解析多半是用在接收web的数据,您说对吗?拿去用的时候改改哦,开始Ctrl+C吧。public class PullXMLReader { public static ...转载 2011-10-14 01:09:41 · 817 阅读 · 0 评论 -
android 幾個快速編譯images指令
Android比较重要的三个img文件:make systemimage - system.img make userdataimage - userdata.img make ramdisk - ramdisk.img make snod - 快速打包system.im转载 2011-09-03 17:38:05 · 7964 阅读 · 0 评论