自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(311)
  • 资源 (35)
  • 收藏
  • 关注

原创 Android Audio实战——静音设置(十七)

对于音量调节,对于车机 Audio 开发来说是相当重要的一个功能,主要分为系统音量、通话音量、导航音量、铃声音量、语音音量(微信等第三方应用)等。前面已经对音量调节有了详细分析分析,但这里还是有必要对音量静音功能进行分析。

2023-11-10 11:23:30 433

原创 Android WMS——窗口动画启动(十七)

上一篇文章主要介绍了触发添加窗口动画和加载动画资源,接下来开始进一步触发,对动画的参数进行了进一步设置。

2023-11-03 17:51:39 87

原创 Android WMS——窗口动画触发及加载(十六)

Android 窗口动画是 Android 系统动画的一种,当一个非 Activity 主窗口,非壁纸窗口添加或者移除的时候会触发 Android 窗口动画的流程,例如 Toast 的弹出或者移除的过程中就会触发窗口动画。我把窗口动画的执行流程大概分为以下几步:触发添加窗口动画加载对应的动画资源创建 leash,同时把执行动画的窗口容器 reparent 到 leash 上开始循环执行窗口动画动画结束,把执行动画的窗口重新 reparent 到该容器原来的父节点上。

2023-11-02 16:18:42 238

原创 Android WMS——窗口动画基础(十五)

下面是一些与动画管理相关的概念和功能:窗口动画(Window Animation):窗口动画是指在窗口打开、关闭、切换等状态转换过程中应用的动画效果。WMS 会根据窗口的状态和属性,在发生状态变化时执行相应的动画。例如,当窗口从最小化到恢复时,可以应用淡入或滑动的动画效果。转场动画(Transition Animation):转场动画是指在不同的屏幕间进行切换时应用的动画效果。例如,当从一个应用切换到另一个应用时,可以应用淡入淡出、滑动等动画效果,以平滑地切换界面。

2023-11-02 15:53:17 372

原创 Android WMS——WMS窗口更新移除(十四)

前面通过几篇的文章详细的介绍了 Window 窗口的添加过程,这里我们简单看一下,AMS 如何实现 Window 窗口的更新和移除流程。

2023-11-01 18:05:04 225

原创 Android WMS——WindowState介绍(十三)

在窗口管理系统(Window Manager Service,WMS)中,WindowState 是一个核心概念,用于表示应用程序窗口的状态和属性。每个应用程序窗口在 WMS 中都对应一个 WindowState 对象。WindowState 包含了多个属性和方法来描述窗口的行为和状态,其中一些重要的属性和方法包括:Token(令牌):每个 WindowState 都有一个唯一的令牌,用于标识窗口的身份。令牌在 WindowToken 对象中维护,并且用于关联窗口与其所属应用程序的其他组件。

2023-11-01 15:29:41 364

原创 Android WMS——WindowToken介绍(十二)

在 WMS(Window Manager Service)中,WindowToken 是一个重要的类,用于表示窗口的令牌(Token)信息。WindowToken 主要负责管理窗口的一些属性和行为,包括窗口类型、窗口拥有者(Owner)以及处理窗口可见性等。DisplayContent.addWindowToken 和 WindowManagerService.addWindowToken 都是用于添加窗口令牌的方法,但它们的作用范围不同。

2023-10-31 18:56:33 270

原创 Android WMS——DisplayContent介绍(十一)

在 Android 的 WMS(Window Manager Service)中,DisplayContent 类扮演着非常重要的角色。它的主要作用是管理一个物理显示设备(如屏幕)上所有窗口的信息。具体来说,DisplayContent 封装了一个 Display 对象,它代表一个物理显示设备的抽象。DisplayContent 维护了一个窗口列表(WindowList),内部存储了该显示设备上所有窗口的状态信息,并根据窗口的优先级进行堆叠和排序。

2023-10-31 15:37:42 238

原创 Android WMS——WMS窗口添加(十)

Android 的 WMS(Window Manager Service)是一个关键组件,负责管理窗口的创建、显示、布局和交互等。Window 的操作有两大部分,一部分是 WindowManager 来处理,一部分是 WMS 来处理,如下图所示:WindowManager 中,通过 WindowManagerGlobal 创建 ViewRootImpl ,也就是 View 的根。

2023-10-31 14:13:51 298

原创 Android WMS——WMS类基础(九)

1、WMS重要成员源码位置……………………mPolicy类型为 WindowManagerPolicy。窗口管理策略的接口类,用来定义一个窗口策略所要遵循的通用规范,并提供了 WindowManager 所有的特定 UI 行为。他的具体实现类为 PhoneWindowManager,这个实现类在 WMS 创建时被创建。WMP 允许定制窗口层级和特殊窗口类型以及关键字的调度和布局。mSessions数据类型为 ArraySet,元素类型为 Session。

2023-10-30 14:54:49 229

原创 Android WMS——WM窗口管理(八)

我们在 ViewRootImpl 分析中,已经对 WindowManager 的功能有一个大致了解,这里再来详细看一下 WindowManager 是如何管理 Window 的。

2023-10-28 11:46:51 305

原创 Android WMS——操作View(七)

最开始学习 View 的时候最先分析的是它的布局(LinearLayout、FrameLayout、TableLayout、RelativeLayout、AbsoluteLayout),然后是它的三大方法(measure、layout、draw)。源码位置:/frameworks/base/core/java/android/view/View.javaActivity:应用程序组件,提供一个屏幕,用户可以用来交互来完成某项任务。View:作为所有图形的基类。

2023-10-28 11:45:43 173

原创 Android WMS——ViewRootImpl分析(六)

Actiivty 中会创建一个 Window 对象。setContentView 方法中的 View 最终也会被添加到 Window 对象中的 DecorView 中,也就是说一个 Window 中对应着一个 View。这个 View 是被 ViewRootImpl 操作的。WindowManager 就是入口。

2023-10-28 11:45:24 260

原创 Android WMS——Dialog和Toast窗口创建(五)

每一个 Window 都对应着一个 View 和一个 ViewRootImpl。Window 表示一个窗口的概念,也是一个抽象的概念,它并不是实际存在的,它是以 View 的方式存在的。WindowManager 是我们访问 Window 的入口,Window 的具体实现位于 WindowManagerService 中。WindowManager 和 WindowManagerService 交互是一个 IPC 的过程,最终的 IPC 是在 RootViewImpl 中完成的。

2023-10-26 20:27:55 331 2

原创 Android WMS——Activity窗口创建(四)

我们都知道 View 不能单独存在,必须依附在 Window 上面,因此有视图的地方就有 Window。这些视图包括 :Activity,Dialog,Toast,PopupWindow 等等。

2023-10-26 16:29:38 149

原创 Android WMS——Window窗口(三)

第一个子窗口应用窗口的子窗口,PopupWindow的默认类型用来显示Media的窗口TYPE_APPLICATION_PANEL的子窗口OptionMenu、ContextMenu的默认类型TYPE_APPLICATION_MEDIA的重影窗口,显示在TYPE_APPLICATION_MEDIA和应用窗口之间。

2023-10-26 11:17:51 204

原创 Android WMS——系统服务(二)

WMS 作为系统服务,也是在 SystemServer 内部启动的。Android 系统在启动的时候,会启动两个重要的进程,一个是 Zygote 进程,另一个是由 Zygote 进程 fork 出来的 system_server 进程,SystemServer 会启动我们在系统中所需要的一系列 Service。

2023-10-25 17:57:07 292

原创 Android WMS——概述(一)

窗口动画是指在切换窗口、改变窗口大小或位置等场景下,窗口的平滑过渡效果。这些动画能够为用户带来视觉上的流畅感,增加用户的交互乐趣。Android 系统提供了一些内置的窗口动画效果,并支持开发者自定义窗口动画。开发者可以通过使用属性动画系统,来自定义窗口动画效果。通过设置窗口的属性值,如位置、大小、透明度等,并根据自己的需求创建、配置和管理属性动画对象,从而实现各种独特的窗口动画效果。总的来说,Android 的 WMS 通过结合属性动画系统,支持窗口动画效果的展示。

2023-10-25 15:29:10 378 2

原创 Android Radio实战——静音操作(十九)

在之前的文章中,介绍 RadioTuner 时看到了静音功能的接口,当时感觉跟其他接口差不多,就没有做详细分析,但是在后来看代码时发现并没有那么简单。这里我们就再来分析以下 Radio 的静音操作流程。

2023-10-23 18:12:50 487

原创 Android AMS——进程管理(十八)

Android AMS 的进程管理主要涉及以下几个方面:进程创建:当需要启动一个应用程序时,AMS 会负责创建该应用的进程。进程创建是根据应用的包名和启动组件信息进行的。创建进程时,AMS会为其分配一个唯一的进程 ID 和进程运行时环境。进程分配:AMS 根据不同的应用和组件属性,为每个应用分配不同的进程优先级。进程分配的优先级包括前台进程、可见进程、服务进程和后台进程等。

2023-10-18 20:35:15 185

原创 Android AMS——优先级内存回收(十七)

updateOomAdjLocked() 方法用于在 Android 系统中动态调整应用程序的优先级和内存使用权重。在Android系统中,OOM(Out-of-Memory)管理器负责根据系统内存使用情况,决定哪些进程在内存不足时被终止以释放内存。OnTrimMemory 的主要作用就是指导应用程序在不同的情况下进行自身的内存释放,以避免被系统直接杀掉,提高应用程序的用户体验。

2023-10-18 20:16:19 226

原创 Android AMS——全局内存回收(十六)

trimApplications() 方法用于底层系统中的全局内存回收。它会遍历整个应用程序列表,检测不活动的应用程序,并主动关闭这些应用程序,释放它们占用的内存资源。该函数的目的是通过释放不再使用的应用程序所占用的内存空间,从而提高整个系统的性能和稳定性。它可以通过以下几种方式来实现内存回收:关闭不活动的应用程序:当应用程序处于后台运行或者长时间没有与用户交互时,它们被认为是不活动的。trimApplications() 函数可以检测到这些不活动的应用程序,并将它们关闭,释放它们所占用的内存空间。

2023-10-14 14:10:10 121

原创 Android AMS——停止和结束Activity清理(十五)

processStoppingAndFinishingActivities 方法在 Android 系统中负责处理正在停止和结束的Activity。在Android系统中,当一个 Activity 被标记为停止状态(stopped)时,它不再可见,但是系统仍然保留该 Activity 的状态和资源,以便在需要时能够快速恢复。然而,当系统内存紧张需要回收内存时,processStoppingAndFinishingActivities() 函数会被调用,用于处理这些已停止的 Activity。

2023-10-12 20:01:25 165

原创 Android AMS——内存回收机制(十四)

Android AMS 的内存回收机制主要涉及以下几个方面:Low Memory Killer(LMK):这是 Android 系统中的一个重要组件,用于监测系统内存使用情况并根据一定的策略杀死进程以释放内存。LMK 在系统内存不足时,会根据优先级和内存使用情况决定杀死哪些进程,从而释放内存资源。优先级分类:AMS将应用根据其重要性和用户体验分为不同的优先级,如前台进程、可见进程、服务进程和后台进程。根据优先级,AMS在内存不足时会更倾向于杀死优先级较低的进程,以保证前台进程和用户正在交互的进程的运行。

2023-10-12 16:34:21 231

原创 Android AMS——栈管理详解(十三)

首先,Activity 启动,分为两个类型,从 Activity 中的启动,和非 Activity 中的启动。这两种发动,决定了启动流程中的 resultTo 是否存在,即源 Activity 的 ActivityRecord。目标 Activity 的启动栈核算,取决于它的启动形式,即最终的 mFlag,还有源 Activity 的栈。

2023-10-11 20:56:44 210

原创 Android AMS——创建任务栈(十二)

在了解栈的创建之前,我们还要知道 Activity 的启动模式,有过 APP 开发经验的朋友对这个应该多少有些了解。我们再来简单回顾一下。

2023-10-11 13:12:21 270

原创 Android AMS——栈管理基础(十一)

Android AMS(Activity Manager Service)是Android系统中负责管理应用程序生命周期和任务栈的重要服务。通过 AMS,系统可以管理应用程序的启动、切换、销毁和任务栈等操作。其中,Activity 栈管理是AMS的核心功能之一。Android 的 Activity 栈是用来管理应用程序中各个 Activity 实例的,它采用栈的数据结构,遵循后进先出(LIFO)的原则。当一个 Activity 启动时,它会被放入栈顶;当一个 Activity 被销毁时,它会从栈中移除。

2023-10-10 18:03:43 177

原创 Android AMS——Activity暂停流程(十)

在前面的文章中,对于已启动的应用,在启动新的 Activity 时,调用到 resumeTopActivityInnerLocked() 方法会先调用 startPausingLocked 暂停前一个 Activity,再启动新的 Activity。这里我们就看以下 Activity 的暂停流程。

2023-10-08 20:57:59 147

原创 Android AMS——APP启动流程(九)

调用 Activity 的 startActivity 方法来启动目标 Activity。接着就会调用到 Instrunmentation 的 execStartActivity 方法,通过获取 ATMS 的 binder 代理对象,然后调用到 ATMS 的 startActivity 中去。

2023-10-08 16:53:57 249

原创 Android AMS——应用启动Activity(八)

上一篇文章在创建 Application 后还调用了 ActivityTaskManagerInternal 的 attachApplication 方法去启动 Activity,启动 Activity 的流程我们从这里开始分析。

2023-09-27 11:19:01 254

原创 Android AMS——应用创建Application(七)

前面已经分析了进程的创建流程,最后启动了 ActivityThread 类 main 的方法,接下来开始创建该应用对应的 Application。

2023-09-26 17:31:03 263

原创 Android AMS——应用进程孵化过程(六)

上一篇文章最后说了,ZygoteServer 会在系统启动的时候,创建一个 Socket 服务端,用于接收客户端的 fork 请求。ZygoteServer 在初始化结束后,会调用 runSelectLoop() 方法,用于处理客户端的消息。当客户端请求 fork 进程时,runSelectLoop() 方法会转交给 ZygoteConnection 类的 processCommand() 方法去处理。

2023-09-26 13:13:43 216

原创 Android AMS——应用进程创建流程(五)

经过前两篇的内容才梳理完桌面进程启动的准备工作,这一篇才开始 Launcher 进程的真正启动历程。接上一篇,在 ActivityTaskSupervisor 中会判断进程是否存在,如果进程不存在,则会创建进程,执行 startProcessAsync() 方法。如果进程存在,则执行 realStartActivityLocked() 方法。在 Launcher 的启动时,进程是不存在的。所以我们先来分析一下进程不存在的情况。

2023-09-25 17:08:45 388

原创 Android AMS——应用进程创建准备(四)

上一篇文章介绍了 Launcher 的前期准备工作,这里我们继续分析 Launcher 进程的启动启动流程。

2023-09-25 14:35:11 326

原创 Android AMS——Launcher启动前期(三)

上一篇文章介绍了 SystemSever 启动 AMS 的流程。最后,当引导服务、核心服务、其他服务都完成后,会调用AMS中的 systemReady() 方法,告知 AMS 可以执行第三方代码,这篇文章我们接着分析。

2023-09-25 11:23:24 195

原创 Android AMS——AMS初始化(二)

Android AMS 也是一个系统服务,属于系统服务中的引导服务(startBootstrapServices)。这里我们主要看一下 ActivityManagerService 的启动流程。

2023-09-23 16:45:27 306

原创 Android AMS——概述(一)

1、Activity生命周期管理Activity 生命周期是指在 Android 应用中,一个 Activity 从创建到销毁的整个过程。了解 Activity 生命周期非常重要,因为它涉及到应用的状态变化、内存管理以及用户交互等方面。onCreate()当 Activity 第一次创建时,系统会调用onCreate()方法。在这个阶段,可以进行一些初始化工作,例如设置布局、绑定数据等。一般来说,该方法执行完后,Activity 会进入 "Created" 状态。onStart()

2023-09-22 15:33:40 797

原创 Android Radio实战——打开Tuner(十八)

对于 Radio 的初始化在前面的很多功能中,都会到 mRadioTuner 参数,获取 mRadioTuner 的过程其实就是对 tuner 的初始化。

2023-09-19 20:56:07 721 6

原创 Android UT开发简介

JUnit是一个用于编写和运行单元测试的开源框架。它是Java开发中最受欢迎的单元测试框架之一,用于测试Java应用程序的各个组件、方法和功能。简单易用:JUnit提供了一组简洁而直观的API,易于学习和使用。它使用注解和断言来编写测试代码,使得编写和运行单元测试变得简单明了。自动化测试:JUnit支持自动化测试,即可以编写一次测试,然后反复运行以确保代码在整个开发过程中保持正确性。这样可以节省大量手动测试的时间和工作量。测试驱动开发:JUnit鼓励测试驱动开发(TDD)的实践。

2023-09-13 13:55:28 501

原创 Framework基础——Zygote进程介绍(五)

从 AndroidRuntime 到 ZygoteInit,主要分为3大过程:创建虚拟机——startVm():调用JNI虚拟机创建函数;注册 JNI 函数——startReg():前面已经创建虚拟机,这里给这个虚拟机注册一些 JNI 函数(后面 Java 中用到的函数是 native 实现,这里需要提前注册这些函数);

2023-08-22 11:22:41 59

页面跳转与数据回传

页面跳转与数据回传,跳转方法startActivityForResult的使用与返回数据的处理。

2015-02-16

Android控件的简单使用

Android控件简单使用,AoutCompleTextView、MultiAoutCompleTextView、ToggleButton、CheckBox、RadioGroup等控件

2015-02-16

通知Notification

这是一个Android中通知的简单使用源码,基本满足大多是用户的使用需求,其中的注释特别详细,适合初学者学习使用。

2015-01-28

布局优化Demo

布局界面中include、merge、ViewStub的使用实例。

2015-01-27

ScorollView简单使用

主要ScorollView简单使用方法,包括滑动监听、滑动加载、位置跳转等功能。适合初学者研究使用,注释非常详细。

2015-01-23

ViewFlipper简单使用

ViewFlipper实现图片轮播和图片滑动切换,原理和思路比较清晰,滑动切换效果不是很好,需要修改动画效果文件。

2015-01-21

ViewPager简单使用

主要介绍ViewPager的简单使用和三种Adapter的区别,适合初学者学习使用。

2015-01-21

Fragment使用

主要介绍Fragment的使用,包括动态加载、静态加载、生命周期、数据传递等,代码里注释比较详细,但代码中的结构和命名比较混乱,最好结合下面的问章看。http://blog.csdn.net/c19344881x/article/details/42876041

2015-01-20

进度条简单使用和自定义

进度条简单使用和自定义进度条显示风格,代码比较简单,注释详细,适合初学者。

2015-01-16

下拉列表使用

下拉列表的简单实用Demo,代码简单注释详细,适合初学者学习使用。

2015-01-16

日期时间选择

日期时间选择控件的使用,包括嵌入Activity中和弹出式两种情况,适合初学者,代码注释比较详细。

2015-01-16

广播使用Demo

主要包括三种类型的广播的简单实用及对比。

2015-01-14

ContentProvider测试Demo

ContentProvider的测试Demo,只有下载并运行http://download.csdn.net/detail/c19344881x/8360531下的应用才会看到效果。单独下载没有用处。

2015-01-14

ContentProvider使用

使用ContentProvider,实现应用程序的数据共享。

2015-01-14

添加查询联系人信息

实现手机联系人的添加和查询功能,没有积分的可以去http://blog.csdn.net/c19344881x/article/details/42679795,

2015-01-14

本地文件读写

主要实现本地文件的创建以及读写操作。没有积分的可以搜索《Android开发存储方式详解之本地文件读写实例》查看源码。

2015-01-13

自定义导航栏

代码中有详细的注释,功能比较简单,主要是学习使用,有积分的可以下载支持一下,如果实在没有积分可以查找我的《Android 自定义控件详解》这篇文章学习。

2015-01-09

WebView JS方法调用

在WebView页面上的按钮点击事件响应本地类中的方法。

2015-01-07

WebView文件下载

用于实现WebView页面中的文件下载功能。

2015-01-06

phonegap-2.9.1.zip

PhoneGap是一个用基于HTML,CSS和JavaScript的,创建移动跨平台移动应用程序的快速开发平台.

2014-11-24

HCI Log分析工具-CPAS-11

HCI Log分析工具-CPAS-11,使用参考:https://xiaoxu.blog.csdn.net/article/details/129261272

2024-04-17

Android Audio相关流程时序图

Android 11 Audio相关流程时序图,需要使用EA画图工具打开。包含Audio中音量获取/设置、焦点申请/放弃、属性设置等相关流程,从APP层到Hal层。 详细讲解相关文章参考:https://blog.csdn.net/c19344881x/category_12324194.html

2023-11-30

Android Radio相关流程时序图

Android 9.0 Radio相关流程时序图,需要使用EA画图工具打开。包含Radio暂停、播放、切换电台、获取电台信息、切换FM/AM、调频/调辐、搜索、取消搜索等相关流程,从APP层到Hal层。同时还包含类图等其他软件图。 详细讲解相关文章参考:https://blog.csdn.net/c19344881x/category_12312897.html

2023-09-01

Android 蓝牙开发相关知识总结

Android 蓝牙开发相关知识总结

2023-03-07

SurfaceFlinger学习笔记总结

SurfaceFlinger学习笔记总结

2023-03-07

MinGw 安装包,版本0.6.2

MinGw 安装包,版本0.6.2

2023-03-07

根据.h文件在自己的so库中调用三方so库

根据.h文件在自己的so库中调用三方so库

2023-01-06

Android Studio生成自己的so库

Android Studio生成自己的so库

2023-01-06

本地实现U盘扫描SDK部分代码

本地实现U盘扫描功能SDK,无法直接运行,需要自己编译成SDK在调用。 参考:https://blog.csdn.net/c19344881x/article/details/126161462

2022-10-28

开发调试所使用的各种格式音视频

视频格式:ts 264 avi wmv mkv mov rm 3gp flv gif mpg rmvb swf vob webm asf dat f4v h264_mp4 h265_mp4 音频格式:aac ac3 aiff amr au m4a mka mp2 ogg ra wav wma mp3

2022-07-20

jai-imageio和swingx.jar.zip

【图形处理相关的jar包】jai-imageio-1.1.jar和swingx-1.6.1.jar下载

2021-12-16

Android端Socket实现聊天功能

Android端Socket实现聊天功能,能够发送文字、图片、商品等信息,实现了消息本地存储。讲解:https://mp.csdn.net/mp_blog/creation/editor/120673184

2021-10-11

SocketDemo.zip

Android Socket通信简单实现源码下载:https://blog.csdn.net/c19344881x/article/details/120455491

2021-09-24

竖直滚动TextView

很简单的文本信息竖直滚动展示效果,没有积分的可以搜索“Android TextView竖直滚动文字广告效果”的博客。

2016-01-18

滚动选择控件

自定义日期滚动选择控件,代码使用方便,而且可以通过修改自定义Dialog中代码控制日期可选范围和添加时间选择功能等。

2015-08-25

断点续传下载

主要实现文件下载的暂停和继续下载功能。 用到的知识点: 1、Service的使用以及Service与Activity之间的数据交互; 2、SQLite数据库的简单使用; 3、文件下载与存储; 4、广播的简单使用。

2015-05-19

AsyncTask异步加载使用

AsyncTask异步加载使用Demo,详解可以参考《Android中AsyncTask的使用详解》,代码中的注释也比较详细,初学者可以参考。

2015-05-15

Android仿百度贴吧看帖滑动返回效果

实现百度贴吧看帖时的滑动返回效果和AutoCompleteTextView的使用。

2015-04-14

手势识别实现

文件中包含两种实现手势识别功能的工程,一种是使用GestureDetector实现手势识别,另一种是使用GestureOverlayView实现手势识别。

2015-02-26

Service使用

实现Service的启动、停止、绑定、解绑与Service中方法的调用。

2015-02-25

空空如也

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

TA关注的人

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