• 说说 Android 的壁纸管理


    本文在 https://wkmcyz.notion.site/Android-e203f65b6c1c4022b053db6ce24570bd 阅读体验更好。

    说说 Android 的壁纸管理

    Android 的壁纸是由 WallpaperManagerService 进行管理的。下文中的 “管理服务” 指的即是 WallpaperManagerService 。

    Android 上的壁纸有静态壁纸和动态壁纸之分,不过其启动以及进程间的通信的原理和模式是一样的,只是实际的绘制不同而已,一个只绘制一张图,而另一个会根据时间绘制相同的内容。

    WallpaperManagerService 对壁纸的管理

    管理服务在切换壁纸的时候,每次切换的时候,并不是指定一个图片文件就可以进行切换的,不同的壁纸需要不同的类来完成其绘制,所以在切换壁纸的时候,实际指定的是一个新的壁纸绘制的工作类。

    WallpaperManagerService 是运行在 system_server 里的,作为一个对外的接口和管理者。有些应用需要设置壁纸的时候(比如说“设置”、“壁纸”这类系统应用),就会获得 WallpaperManagerService 进行壁纸的设置。

    设备上可能有多个不同种类的壁纸管理器,每个分别负责一个种类的壁纸,每种壁纸实际切换的逻辑以及具体的绘制都是在其内部进行的,WallpaperManagerService 只是在适当的时机切换当前正在运行的壁纸管理器(比如静态壁纸切换成动态壁纸),或者是通知当前的壁纸管理器切换一下壁纸(比如说换个图片壁纸)。

    开发者在开发的时候,可以做些什么?

    因为设置壁纸管理器只有有系统权限的应用才能设置,所以我们不能自己开发一个特殊的壁纸管理器然后使用。开发自定义的壁纸管理器的话,最多的使用场景就是在开发自己的 Android 操作系统的时候使用。比如可以开发一个特殊的壁纸展示,例如开发一个会根据当前时间展示不同光照方向的壁纸管理器。
    不过普通应用是具有设置壁纸的权限的,可以通过 WallpaperManager 进行静态壁纸的设置。

    相关类

  • 相关阅读:
    C#ActiveX控件开发学习
    SPFA最短路算法
    用宏实现C/C++从非零整数开始的数组
    mysql学习笔记
    python学习笔记(多进程并发)
    python学习笔记(socket模块)
    jQuery学习笔记
    python学习笔记(IO模型)
    Django学习笔记
    导入Excel时启动Excel.exe进程出错
  • 原文地址:https://www.cnblogs.com/wkmcyz/p/15824776.html
Copyright © 2020-2023  润新知