Android(安卓)Wallpaper分析
16lz
2021-01-24
Android动态墙纸的本质是一个“Service”,这个Service能够被主界面Launcher加载。那么Launcher是如何能识别这个包含动态墙纸Service的APK的呢?AndroidManifest.xml文件的intent-filter的action泄露了天机:
<actionandroid:name="android.service.wallpaper.WallpaperService"/><action android:name="android.service.wallpaper.WallpaperService" />
不错,系统正式通过APK的这个action把其当做一个动态墙纸加载进LivePicker列表,用户在LivePicker列表里选择自己喜欢的动态墙纸,进而将动态墙纸显示进Launcher的背后。
需要指出的是,Android的动态墙纸虽然似乎是显示在Launcher的背景里,但其实这只是假象,动态墙纸和Launcher是完全不同的两个进程,只不过Launcher和动态墙纸的进程可以通过框架里的WallpaperManager进行进程间通信罢了,用户在Launcher桌面滑动、点击屏幕时有的动态墙纸能产生交互效果,实际上就是这个进程通信完成的。如果你通过代码将Launcher的背景设置为非透明的,比如以不透明的图片或者颜色作为背景,那么,你将看不到任何动态墙纸效果,当然,这样的话,静态墙纸你也不会看到了。
更多相关文章
- 深入理解Activity启动流程(一)–Activity启动的概要流程
- Android两种杀掉进程方式总结(System.exit()和Process.killProce
- Android使用FFmpeg动态库播放视频
- Android(安卓)面试精华题目总结
- android 跨应用启动/绑定Service && aidl
- android之动态更改屏幕方向的简单例子(LANDSCAPE与PORTRAIT)!
- 深入了解Android(安卓)任务和进程
- Android(安卓)应用初始化及窗体事件的分发
- android的ITC