自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(28)
  • 收藏
  • 关注

原创 Wm指令源码

public class Wm extends BaseCommand { private IWindowManager mWm; /** * Command-line entry point. * * @param args The command-line arguments */ public static void mai

2017-03-13 21:41:48 2988

原创 Telecom指令源码

public final class Telecom extends BaseCommand { /** * Command-line entry point. * * @param args The command-line arguments */ public static void main(String[] args) {

2017-03-13 21:40:42 983

原创 sm指令分析

1, 概述Sm主要和android机器的存储相关。主要命令有list-disks/ list-volumes等2,详细流程Sm.java很简单,所以直接附上整个java类,如下public final class Sm { private static final String TAG = "Sm"; IMountService mSm; priva

2017-03-13 21:39:01 15594 2

原创 Settings指令分析

1, 概述Settings指令也是和ContentProvider进行交互,对系统的数据库属性值进行查询、删除和修改。2, Settings详细流程  SettingsCmd的main方法如下,public static void main(String[] args) { if (args == null || args.length < 2) {

2017-03-13 21:37:46 1838

原创 RequestSync分析

1, 概述RequestSync是同步的意思,主要是和ContentResolver进行交互,同步数据库信息。2, RequestSync详细流程  RequestSync的main方法如下,public static void main(String[] args) { try { (new RequestSync()).run(args)

2017-03-13 21:34:42 2834

原创 media指令分析

1, 概述media主要是和SessionManager进行交互,进行多媒体的播放、暂停等操作。主要有三种命令,media dispatch KEY / media list-sessions / mediamonitor.本文主要以media dispatch KEY来论述。 2, media详细流程  Media的main方法如下,public static void

2017-03-13 21:32:31 3236

原创 Input命令分析

1, 概述Input主要是和InputManager进行交互,可以模拟键盘的点击事件,鼠标的滑动点击事件等。平时使用最多的是adb shell input keyevent指令,就以该指令来论述流程,其他类似的指令原理完全一样。2, keyevent详细流程  Input的main方法如下,public static void main(String[] args) {

2017-03-13 19:45:40 2309

原创 ime命令分析

1, 概述ime主要是和InputMethodManager进行交互,获取以及设置系统中的输入法。2, ime命令命令格式:ime 命令列表:命令功能实现方法list获取所有输入法getInputMethodListenable ID设置输入法可用

2017-03-13 19:43:23 1634

原创 dpm命令分析

1, 概述dpm主要是和DevicePolicyManage进行交互,通过用户授权应用设备管理权限后,可以在代码修改很多系统设置。2, dpm命令命令格式:dpm 命令列表:命令功能实现方法set-active-admin激活mDevicePolicyManager.setActiveA

2017-03-13 19:40:38 10475 1

原创 content命令分析

1, 概述content主要是和数据库进行交互,对数据库进行增删改查操作。2, content命令命令格式:contenturi 命令列表:命令功能实现方法insert插入ContentProvider. insertdelete删除delet

2017-03-13 19:39:18 3518

原创 bmgr命令分析

1, 概述bmgr主要是和BackupManagerService进行交互,主要是备份和恢复数据。2, bmgr命令命令格式:bmgr  命令列表:命令功能实现方法backup 包名备份apkBMS. dataChangedrun立即备份bac

2017-03-13 19:36:26 1441

原创 AppWidget命令分析

1, 概述AppWidget是窗口小部件, appwidget命令主要是设置apk是否有放在窗口的权限。2, AppWidget命令命令格式:appwidget  命令列表:命令功能实现方法grantbind允许 权限appWidgetService.setBindAppWidgetPe

2017-03-13 19:33:48 1153

原创 AppOps命令分析

1, 概述AppOps全称是 Application Operations,类似平时常说的应用程序的操作(权限)管理。AppOps是Google原生Android包含的功能,但是Google在每次版本更新时都会隐藏掉AppOps的入口。 2, AppOps命令命令格式:Appops  命令列表:命令功能实现方法

2017-03-13 19:30:05 3832

原创 PM命令分析

1, PM命令命令格式:pm  命令列表:命令功能实现方法list packages列举app包信息PMS.getInstalledPackagesinstall [options] 安装应用PMS.installPackageAsUser

2017-03-13 19:27:31 2750

原创 Am 命令分析

1, AM命令举例:1拨打电话10086adb shell am start -a android.intent.action.CALL -d tel:100862打开网站www.baidu.comadb shell am start -aandroid.intent.action.VIEW -d  http://baidu.comam命令还可以启动Activity,Ser

2017-03-13 19:25:13 3457

原创 进程终止分析之二

1, 概述在系统内存较低时就会杀死一些进程,最明显的在卸载一个apk之前会杀死该apk所在的进程。在PMS的deletePackageLI方法中会调用killApplication方法杀死进程。因此,本文以killApplication方法为例来论述杀死进程的过程。当然在android系统中,还有很多情况下会杀死进程,例如在很多异常的时候会直接杀死进程。Java层基本都是在AMS中通过Proc

2017-03-12 21:33:06 1388

原创 进程终止分析之一

1, 概述在系统内存较低时就会杀死一些进程,最明显的在卸载一个apk之前会杀死该apk所在的进程。在PMS的deletePackageLI方法中会调用killApplication方法杀死进程。因此,本文以killApplication方法为例来论述杀死进程的过程。2, 进程终止流程图如下,PMS的killApplication方法如下,private

2017-03-12 21:28:38 2424

原创 进程的生命周期与优先级

1, 进程生命周期Android系统将尽量长时间地保持应用进程,但为了新建进程或运行更重要的进程,最终需要清除旧进程来回收内存。 为了确定保留或终止哪些进程,系统会根据进程中正在运行的组件以及这些组件的状态,将每个进程放入“重要性层次结构”中。 必要时,系统会首先消除重要性最低的进程,然后是清除重要性稍低一级的进程,依此类推,以回收系统资源。Android在回收资源的时候,进程被终止的顺序

2017-03-12 21:21:41 1048

原创 进程初始化

1, 进程运行zygoteState创建好进程并且完成初始化操作之后,会调用进程的ActivityThread的main方法, main方法是一个进程最开始执行的地方。public static void main(String[] args) { Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, "Activit

2017-03-12 21:19:35 1272

原创 进程启动源码分析

1, 概述在android中,进程的概念被弱化了,主要是四大组件,但是四大组件也运行于进程中;AMS负责管理和调度进程,主要体现在启动进程,动态地根据组件调整进程在mLruProcesses列表中的位置,还可以调整进程的优先级,这2项都和系统的内存回收相关。并且,一个进程里面可以运行多个apk(通过Shareuid的方法),一个apk也可以运行在多个进程里(通过配置Android:

2017-03-12 21:14:56 386

原创 apk卸载分析

1, apk卸载和安装APK过程相对,卸载apk过程如下,1,从PMS的内部结构上删除acitivity、service、provider等信息2,更新Settings中的package信息3.删除code、resource等信息4.删除dex文件 Apk安装时,一般都会走PackageManagerService 中的 installPackage 方法。相反,卸

2017-03-12 09:07:02 2908

原创 apk的安装

1, apk安装方式apk的安装其实就是将外部文件的apk文件复制到 sysytem相关的内部文件中并进行解压等一系列操作。Apk至少有三种安装方式:PackageManagerService(简称PMS), 是android系统中一个核心的服务,它负责系统中Package的管理,应该程序的安装、卸载等.在SystemServer的startBootstrapServices方法启动。

2017-03-12 08:56:06 787

原创 PackageManagerService分析之二

3, 扫描Package第二个阶段的工作主要是扫描系统中的APK,由于需要逐个扫描apk文件,因此手机上安装的程序越多,PKM的工作量越大,系统启动速度越慢,也就是开机时间越长3.1 系统库的dex优化以下的代码主要是对系统库BOOTCLASSPATH指定,或platform.xml定义,或者/system/frameworks目录下的jar和apk包进行一次检查,该dex优化

2017-03-12 08:49:42 892

原创 PackageManagerService分析之一

1, 基本概念PackageManagerService(简称PMS), 是android系统中一个核心的服务,它负责系统中Package的管理,应该程序的安装、卸载等.在SystemServer的startBootstrapServices方法启动。mPackageManagerService = PackageManagerService.main(mSystemContext,

2017-03-12 08:41:11 605

原创 LoaderManager源码分析之二

4, LoadTask三部曲LoadTask继承AsyncTask类,重写了doInBackground/ onPostExecute/ onCancelled三个方法,但是并没有重写onProgressUpdate,所以并不能更新进度信息。 4.1, doInBackgrounddoInBackground方法运行于线程池的线程中。流程图如下,Cursor

2017-03-01 22:35:35 500

原创 LoaderManager源码分析之一

1, 基本概念LoaderManager从名字来看,就是异步任务的意思。LoaderManager是一个抽象类定义如下,public abstract class LoaderManager {还包含一个接口,有三个方法,public interface LoaderCallbacks { public Loader onCreateLoader(int id,

2017-03-01 22:32:07 523

原创 AsyncTask源码分析之二

5,线程切换和管理5.1,线程切换AsyncTask中4个方法执行所在的线程如下,是如何切换的呢?onPreExecute //主线程,执行任务之前的一些UI操作doInBackground //子线程,执行任务onProgressUpdate // 任务执行时更新进度信息onPostExecute // 主线程,任务完成时更新UI利用内部类Inter

2017-03-01 22:08:29 227

原创 线程池分析

1,线程池当进程中线程较少时,可以手动去新建thread。但是如果大量的线程会使进程管理很混乱,并且不断的创建销毁线程影响性能。在此情况下,线程池诞生了。线程池优点如下,减少创建和销毁线程的次数,每个工作线程可以多次使用可根据系统情况调整执行的线程数量,防止消耗过多内存。2 ThreadPoolExecutor2.1 构造方法AsyncTask构造ThreadPoolExe

2017-03-01 21:57:08 333

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除