自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(44)
  • 资源 (4)
  • 收藏
  • 关注

原创 android资深工程师如何分析system_server异常

如果System Server的CPU占用率一直很高,可能是System Server在进行一些高负载的操作,如执行密集计算或者大量的逻辑推理等。工具使用:利用AndResGuard等工具对System Server相关资源进行优化,以及使用Remdesivir等工具对System Server进行安全增强,这可以帮助我们在不影响System Server运行的情况下,检查其性能和安全性。分析系统重启原因:了解System Server是否有过重启历史,重启的原因是什么,这有助于找到问题的可能原因。

2023-08-04 09:57:20 968 1

原创 Android Launcher启动流程

1.Launcher概述Android系统启动的最后一步是启动一个Home应用程序,这个应用程序用来显示系统中已经安装的应用程序,这个Home应用程序就叫做Launcher。应用程序Launcher在启动过程中会请求PackageManagerService返回系统中已经安装的应用程序的信息,并将这些信息封装成一个快捷图标列表显示在系统屏幕上,这样用户可以通过点击这些快捷图标来启动相应的应用程序。2.Launcher启动流程SyetemServer进程在启动的过程中会启动PackageMan.

2021-12-23 16:10:58 1749

转载 Android系统服务PMS

1、概述    PowerManagerService是负责管理、协调设备电源管理的系统服务之一,设备常见功能如亮灭屏、亮度调节、低电量模式、保持CPU唤醒等,都会通过PMS的协调和处理。其继承自SystemService,因此具有SystemService子类的共性:具有生命周期方法,由SystemServer启动、注册到系统服务中,通过Binder和其他组件进行交互等。其生命周期方法如下:    构造方法:通过反射调用,获取实例;    onstart()方法:开启对应的SystemSer...

2021-12-23 11:57:52 1189

原创 Android studio 4.1报插件不兼容解决方案

安装插件后会报错,说不兼容,解决方案:1、找到插件文件,4.1插件安装的地址在C:\ Users\ Administrator \ AppData\Roaming\Google\AndroidStudio4.1\ plugins,从这里找到不兼容的插件文件;2、将插件移动到Android Studio的安装目录下的 xx\Android Studio\plugins下,重启Android Studio。...

2021-04-16 15:28:28 907

原创 Android性能优化 内存抖动和内存泄漏优化案例

1、JVM内存管理常识LMK (LowMemoryKill)机制android底层会在系统内存告急的时候,按照一定规则杀死一些进程来满足其他进程的内存需要。其中 消耗内存的高低就是其中一项指标,所以,优化app的内存占用,能够有效降低app被系统杀死的概率。GC STW机制GC,垃圾回收进程,在GC线程执行任务的时候,会存在一个 STW (stop the world) 机制,他就会把其他所有线程都挂起。如果GC非常频繁地调用,那就会导致主线程不流畅,给用户的感觉就是卡顿。内存抖动频繁引

2020-10-13 17:13:23 226

原创 Android AIDL参数中in、out、inout、oneway含义及区别

1、定义in、out、inout表示跨进程通信中数据的流向(基本数据类型默认是in,非基本数据类型可以使用其它数据流向out、inout)。in 表示数据只能由客户端流向服务端。(表现为服务端修改此参数,不会影响客户端的对象)out 表示数据只能由服务端流向客户端。(表现为服务端收到的参数是空对象,并且服务端修改对象后客户端会同步变动)inout 则表示数据可在服务端与客户端之间双向流通。(表现为服务端能接收到客户端传来的完整对象,并且服务端修改对象后客户端会同步变动)oneway...

2020-09-30 17:49:44 4041

原创 Android跨进程Binder通信异常总结

1、猜想Binder通信最大可传输8KB-1MB(注:8K是两个PageSize,一个PageSize是申请物理内存的最小单元)2、源码分析1MB-8KB的限制来源于哪里?frameworks/native/libs/binder/ProcessState.cpp#define BINDER_VM_SIZE ((1 * 1024 * 1024) - sysconf(_SC_PAGE_SIZE) * 2)//这里的限制是1MB-4KB*2ProcessState::ProcessSt

2020-09-26 14:58:50 671

原创 Android性能优化之布局优化(使用约束布局)

1、概述约束布局ConstraintLayout是一个ViewGroup,可以在Api9以上的Android系统使用它,它的出现主要是为了解决布局嵌套过多的问题,以灵活的方式定位和调整小部件。官方参考文档2、作用为什么要用ConstraintLayout?在开发过程中经常能遇到一些复杂的UI,可能会出现布局嵌套过多的问题,嵌套得越多,设备绘制视图所需的时间和计算功耗也就越多。ConstraintLayout使用起来比RelativeLayout更灵活,性能更出色。Constra.

2020-09-20 11:29:53 3330

原创 Android系统服务PKMS(PackageManagerService)

1、概述PKMS全称PackageManagerService,是Android核心服务之一,主要负责功能如下:解析AndroidManifest.xml,主要有AndroidManifest中节点信息的解析和提炼。 扫描本地文件,主要针对apk,系统应用、本地安装应用等。 管理本地apk,包括安装、删除等。2、核心源码/frameworks/base/core/java/android/app/ApplicationPackageManager.java/frameworks/.

2020-09-15 21:40:52 1218

原创 移动端跨平台框架演进,及跨平台框架Flutter介绍

跨平台技术演进第一阶段,采用WebView技术绘制界面的Hybrid混合开发技术,通过JS Bridge 将系统部分能力暴露给 JS 调用,其缺点是性能较差,功能受限,扩展性差,不适合交互复杂的场景。 第二阶段,针对WebView界面性能等问题,于是绘制交还原生渲染,仅仅通过JS调用原生控件,相比WebView技术性能体验更好,这是目前绝大部分跨平台框架的设计思路,比如React Native、Weex。虽然通过桥接技术使用原生控件解决了功能受限问题,提升性能体验,但相比原生体验差距还是比较大,以

2020-09-14 20:50:37 221

原创 Android系统为每个应用分配的内存规则

2020-09-13 09:41:14 818

原创 Android系统核心守护进程service_manager

1、概述service_manager是Android中IPC机制的关键组件。负责提供注册服务和查询获取服务功能。一旦service_manager挂了,其它服务需要重启。如healthd、zygote、media、surfaceFlinger等进程都需要重启。2、作用作为操作系统的定位器存在。任何一个应用或系统组件想要使用其它服务,都需要先到service_manager中查询,获取对应服务的句柄。即service_manager提供注册服务和查询服务功能。3、原理注册服.

2020-09-12 15:56:05 613

原创 Android系统服务WMS

1、概述WindowManagerService服务简称WMS,管理整个系统的所有窗口UI。Activity与Window:Activity只负责生命周期和事件处理。 Window主要是管理View创建,以及与ViewRootImpl交互,将Activity与View解耦。 一个Activity包含一个Window(即PhoneWindow),一个PhoneWindow持有一个DecorView(本身是一个FrameLayout)实例。 如果Activity没有Window,那就相当于Se

2020-09-12 10:37:05 2275

原创 Android系统应用之SystemUI

1、定义Android系统核心应用,SystemUI负责反馈系统和应用状态,属于Android Framework一部分(源码目录/frameworks/base/packages/SystemUI/)。范围:状态栏(StatusBar)、导航栏(NavigationBar)、通知栏(Notification Panel)、近期任务界面(Recents)、锁屏界面(Keyguard,Android 8.0新加入)。2、主要模块状态栏 StatusBar:通知消息提示和状态展现 导航栏 Na

2020-09-11 16:07:49 1283

原创 为何要熟悉Android Framework层?

待输入

2020-09-11 14:20:14 268

原创 Android Framework层system_server进程及服务介绍

1、概况 system_server 进程承载着整个framework的核心服务,例如创建 ActivityManagerService、PowerManagerService、DisplayManagerService、PackageManagerService、WindowManagerService、LauncherAppsService等80多个核心系统服务。 这些服务以不同的线程方式存在于system_server这个进程中。2、核心源码/frameworks/b...

2020-09-11 11:05:18 275

原创 Android Framework层Zygote进程

1、概念Android系统的Zygote是一个C/S模型,Zygote进程作为服务端,其它进程作为客户端向它发出“孵化-fork”请求,而Zygote进程接收到这个请求后就“孵化-fork”出一个新的进程。Zygote进程处于Native层创建。核心源码/system/core/rootdir/init.rc/system/core/init/main.cpp/system/core/init/init.cpp/system/core/rootdir/init.zygote64_32

2020-09-11 10:52:19 225

原创 Android系统服务AMS

1、概述ActivityManagerService简称AMS,此服务具有管理Activity行为、控制activity生命周期、派发消息事件、内存管理等功能。2、核心源码/frameworks/base/services/java/com/android/server/SystemServer.java/frameworks/base/core/java/android/app/ActivityThread.java/frameworks/base/core/java/android/a

2020-09-11 10:42:56 157

原创 Android系统整体启动流程

1、总体流程BootRom->BootLoader->Linux Kernel->Init->Zygote->SystemServer->Launcher2、详细启动流程1)设备开机后,引导芯片从ROM中加载Bootloader到RAM,Bootloader检查RAM、初始化硬件参数等。2)Bootloader初始化完成后,进入Kernal层。Kernel层首先启动swapper进程(内核空间第一个进程),用于初始化进程管理、内存管理、加载驱动(驱动自

2020-09-10 15:49:18 260

原创 最新AndroidStudio查看或调试Framework代码攻略

1、作用使用AndroidStudio能够调试Android Framework,断点调试能够更理解Framework逻辑。2、环境搭建 下载Android源码 编译源码 配置Android Studio 配置vm options 配置最大打开文件数 创建Android Framework工程 源码根目录运行.build/envsetup.sh 单独编译idegen模块,在源码根目录运行mmm development/to

2020-09-08 20:15:09 2409

原创 Android依赖项注入(Hilt 和 Dagger 2)

1、概览什么是依赖项注入(DI)?类通常需要引用其他类。通过以下三种方式获取所需的对象:类构造其所需的依赖项。如Car类将创建并初始化自己的Engine实例。 从其他地方抓取。某些 Android API(如Contextgetter 和getSystemService())的工作原理便是如此。 以参数形式提供。应用可以在构造类时提供这些依赖项,或者将这些依赖项传入需要各个依赖项的函数。如Car构造函数将接收Engine作为参数。第三种方式就是依赖项注入!即以参数形式获取依...

2020-09-08 11:48:04 747

原创 AndroidStudio性能分析工具Profile使用总结

1、ProfilerAndroid 平台提供了多种不同的跟踪信息获取途径:Android Studio CPU 性能剖析器 “系统跟踪”应用 Systrace 命令行工具 Perfetto 命令行工具2、CPU Profiler作用:能识别界面性能问题 每个方法占用CPU时间及资源 应用的线程活动情况systrace提供的其他系统级数据可帮助您检查原生系统进程并排查丢帧或帧延迟问题3、MemoryProfiler作用:可帮助识别可能会导致应用卡顿、冻结甚至崩溃的内存泄.

2020-09-06 15:35:40 862

原创 Android Framework系统服务创建流程

1、Android系统层级2、如何在Framework层添加系统服务2.1 Kernel层开发设备驱动程序与开发典型的 Linux 设备驱动程序类似。如果需要添加的硬件设备需要驱动的话,需要在此层添加。2.2HAL层HAL 可定义一个标准接口以供硬件供应商实现,这可让 Android 忽略较低级别的驱动程序实现。借助 HAL,您可以顺利实现相关功能,而不会影响或更改更高级别的系统。HAL 实现会被封装成模块,并会由 Android 系统适时地加载。作用:生成一个动态链接.

2020-09-04 17:54:48 332

原创 Android应用架构MVVM模式

1、常见的架构原则分离关注点 模型驱动界面(最好是持久化模型)2、推荐应用架构(MVVM模式)此架构采用MVVM模式,即Model、View、ViewModel2.1View层Activity/Fragment2.2ViewModel层包含ViewModel、LiveData、SavedStateHandleLiveData是一种可观察的数据存储器,还遵循应用组件(如 Activity、Fragment 和 Service)的生命周期状态,并包括清理逻辑以防止对象...

2020-09-01 19:26:39 214

原创 通俗易懂的设计模式(单例模式)

1、定义1个类只有1个实例化对象,并且提供一个全局访问点。2、作用保证1个类只有1个对象,降低对象之间的耦合。3、工作原理类的构造方法变成私有方法 类内部对类进行实例化 类中定义静态公有方法提供该类的全局唯一访问点,返回该类实例化对象 外部通过调用全局唯一访问方法,获取该类实例化对象4、优缺点4.1 优点提供对唯一实例的受控访问 节省系统资源,对于一些需要频繁创建和销毁的对象,单例模式能节省系统资源4.2 缺点单例类代码过于复杂的化,会违背单一职责原则 实例化的

2020-08-31 15:57:20 144

原创 通俗易懂的设计模式(适配器模式)

1、定义定义一个包装类,用于包装不兼容的接口。分 类适配器模式、对象适配器模式2、作用把一个类接口变换成客户端所期待的另一种接口,从而使得原本接口不匹配而无法一起工作的两个类能够一起工作。3、解决问题原本不兼容而无法一起工作的那些类可以在一起工作。4、模式原理适配器将目标API跟源API衔接起来4.1类的适配器模式如上图,Target期待调用Request方法,但Adaptee并没有此方法。Target:目标角色,期待得到接口,接口定义者。Adapter:适配

2020-08-31 14:10:44 153

原创 Android性能优化总结

1、性能优化目的为了让程序更快、更稳定、更省:更快:运行流畅、不卡顿、能够快速响应用户操作;更稳定:满足用户需求并且运行稳定,不会出现Crash、ANR等问题;更省:节省系统内存、电量、网络等资源;2、优化的性能指标根据目的,需优化的性能指标有:流畅性、稳定性、节省资源性。3、优化方向优化目的 性能指标 优化方向 更快 流畅性 应用启动速度 页面显示速度 页面响应速度 更稳定 稳定性 避免出现

2020-08-30 14:45:47 449 1

原创 Android线程及多线程总结

1、Android常用的多线程方法继承Thread类 实现Runnable接口 AsyncTask HandlerThread IntentService

2020-08-29 15:07:32 245

原创 Android Handler工作机制原理及内存泄漏总结(含HandlerThread)

1、定义一套Android消息传递机制;作用:在多线程应用中,提供消息传递通道。2、为什么只能要在主线程更新UI?为了保证UI操作是线程安全的3、为什么要用Handler消息传递机制?问题:实际开发中,存在多线程并发操作UI情况,导致UI操作的线程不安全需求:1)多个线程可并发操作UI;2)保证线程安全;解决方案:Handler消息传递机制,把子线程更新UI的操作,通过消息传递机制通知主线程,从而在主线程更新UI。4、Handler机制中相关概念有Ha

2020-08-29 11:20:36 221

原创 Android四大组件之Service总结

1、定义Service 中文称 服务,是Android四大组件之一作用:提供需要后台运行的任务(如:复杂计算、下载、音乐播放)特点:后台运行、无界面、生命周期长2、生命周期4个手动调用的方法手动调用方法 作用startService() 启动服务stopService() 关闭服务bindService() 绑定服务unbindService() 解绑服务5个自动调用的方法内部自动调用的方法 作用onCreat() 创建服务onStartCommand() 开始服务onDes

2020-08-28 17:46:38 173 1

原创 Android进程保活和拉活方案总结

1、问题系统为什么会Kill进程?Kill进程为什么是自己的?有什么规则?内存不够会先kill优先级低的进程2、Android进程管理规则Android中的进程也是有着严格的等级,越高优先级越不容易被Kill。3、保活/拉活 方案方法 具体描述 备注 提供进程优先级,降低进程被杀死的概率 利用Notification提升优先级 1)通过startForeground将后台服务设置为前台服务,使进程优先级由4提升为2; 2)进..

2020-08-28 12:01:53 450

原创 计算机网络TCP/IP协议栈&TCP协议总结

1、概念TCP/IP是一个四层协议组成的协议族,自底而上分别是数据链路层、网络层、传输层、应用层。每一层有若干协议组成,每层完成不同功能,上层使用下层提供的服务。数据链路层:处理数据在物理媒介上的传输。网络层:实现数据包的选路和转发。传输层:为两个主机上的应用程序提供端到端的通信。两个协议:TCP协议、UDP协议。应用层:负责处理应用程序的逻辑。OSI七层模型和TCP/IP四层模型的关系OSI是一种理论下的模型,而TCP/IP已被广泛使用,成为网络互联事实上的标准。.

2020-08-28 10:41:00 436

原创 Android四大组件之一BroadcastReceiver总结

1、定义BroadcastReceiver即广播,属于Android四大组件之一广播分:广播发送者、广播接收者2、作用监听其它应用/系统应用发出的消息,自身做出响应。3、应用场景1、不同应用之间通信;2、应用内通信;3、获取系统一些状态变化;4、实现原理广播使用观察者模式,基于消息发布/订阅事件模型5、广播注册方式注册方式分:静态注册、动态注册静态注册:在AndroidManifest.xml里通过****标签声明此App...

2020-08-27 16:24:20 143

原创 Android跨进程通信方式总结

1、AIDL定义IPC:Inter-Process Communication,即跨进程通信AIDL:Android Interface Definition Language,即Android接口定义语言,进程间通信的桥梁;用于让某个Service与多个App之间进行跨进程通信,从而可以实现多个App共享同一个Service的功能。2、Android跨进程通信实现方式Android跨进程通信实现方式采用远程Service。3、使用场景多个应用程序共享同一个后台服务(远...

2020-08-27 15:58:39 1103

原创 设计模式之适配器模式

1、定义适配器模式,简单理解就是封装一个类,用于处理不兼容接口2、作用把一个类的接口换成所要的接口,使得原本一起无法工作的两个类能够一起工作。3、解决问题1)原本接口不兼容而不能一起工作的那些类可以在一起工作。2)解耦,能屏蔽不同平台的差异,使得自身逻辑不变。4、原理在上图中可以看出:冲突:Target期待调用Request方法,而Adaptee并没有(这就是所谓的不兼容了)。解决方案:为使Target能够使用Adaptee类里的SpecificRequest方法,故提供一个中间环节A

2020-08-26 11:54:08 104

原创 Android四大组件之ContentProvider最新总结

1、定义ContentProvider内容提供者,是 Android 四大组件之一2、作用进程间通讯,数据交互和数据共享3、原理ContentProvider底层采用Android的Binder机制4、具体使用4.1 URI(统一资源标识符) 作用:外界进程通过URI找到对应的ContentProvider中的数据,然后对数据进行操作URI分为 系统预置 & 自定义,分别对应系统内置的数据(如通讯录、日程表等等)和自定义数据库自定义URI=content://com.exam

2020-08-25 21:03:51 155

原创 Android基础四大组件之一Activity总结

Android基础四大组件之一ActivityActivity生命周期onCreate、onStart、onResume、onPause、onStop、(onRestart())、onDestroyActivity启动模式4种启动模式,标准模式(Standard)、栈顶复用(SingleTop)、栈内复用(SingleTask)、单例(SingleInstance)4种模式应用场景Activity启动方式Activity启动过程Fragment生命周期Activityg&Fra

2020-08-25 18:52:05 195 1

原创 互联网创业思路

创业趋势1、 趋势(风口)是一半靠做,一半靠等;2、 趋势会变,本质不变,抓住本质,就能顺势而为;3、 未来属于小众市场;机会每隔3~5年就会有一次,选好一个领域深耕,总有一次会让你赶上!发现创业机会的方法凡是大众赞同的,我们要去思考;凡是大众反对的,我们要去研究;凡是大众厌恶的,我们要去搞懂;怎么做?1、抓住小众需求你缺少的并不是创业机会,而是缺少一双发现机会的慧眼。如果...

2020-04-11 20:55:16 440

原创 精选推荐:后端工程师进阶知识完全扫盲

想必大多数后端工程师在开发中都会遇到各种各样得疑难杂症,如消息队列(如何保证消息队列的高可用、如何保证消息队列的高可用?)、搜索引擎(在数据量很大的情况下(数十亿级别)如何提高查询效率啊?)、缓存(如何保证缓存与数据库的双写一致性?)、分库分表(分库分表之后,id 主键如何处理)等,而此篇文章能够完美解决你心中得困惑,助你成为大师。高并发架构消息队列为什么使用消息队列?消息队列有什么优点和...

2020-03-19 23:18:43 341

原创 Android O静态注册无法接收广播,报Background execution not allowed

出现此报错的原因是Android O中对隐式广播做了限制,这种限制主要是把广播用于进程间通信时,广播Receiver无法接收到广播,如果发生了此现象,可以通过shell下 logcat -s BroadcastQueue 可以看到是否报出了这样的警告。W BroadcastQueue: Background execution not allowed: receiving Intent:***...

2020-03-19 17:20:55 1264

Android最新反编译工具

apktool_2.5.0 dex2jar-2.0 jd-gui-windows-1.6.6

2021-07-13

Grassington North Yorkshire.lxk

Grassington North Yorkshire.lxk

2012-07-13

STAXMEM.DLL

xp servicepack 3很好值得你去下载的,支持支持

2011-09-03

stc-isp (win7兼用版)

解压后可以按V479或V483或V486,以管理员的身份运行就可以了,无须安装

2011-07-20

空空如也

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

TA关注的人

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