Android动态墙纸的本质是一个“Service”,这个Service能够被主界面Launcher加载。那么Launcher是如何能识别这个包含动态墙纸Service的APK的呢?AndroidManifest.xml文件的intent-filter的action泄露了天机:

<actionandroid:name="android.service.wallpaper.WallpaperService"/>

不错,系统正式通过APK的这个action把其当做一个动态墙纸加载进LivePicker列表,用户在LivePicker列表里选择自己喜欢的动态墙纸,进而将动态墙纸显示进Launcher的背后。

需要指出的是,Android的动态墙纸虽然似乎是显示在Launcher的背景里,但其实这只是假象,动态墙纸和Launcher是完全不同的两个进程,只不过Launcher和动态墙纸的进程可以通过框架里的WallpaperManager进行进程间通信罢了,用户在Launcher桌面滑动、点击屏幕时有的动态墙纸能产生交互效果,实际上就是这个进程通信完成的。如果你通过代码将Launcher的背景设置为非透明的,比如以不透明的图片或者颜色作为背景,那么,你将看不到任何动态墙纸效果,当然,这样的话,静态墙纸你也不会看到了。


更多相关文章

  1. 深入理解Activity启动流程(一)–Activity启动的概要流程
  2. Android两种杀掉进程方式总结(System.exit()和Process.killProce
  3. Android使用FFmpeg动态库播放视频
  4. Android(安卓)面试精华题目总结
  5. android 跨应用启动/绑定Service && aidl
  6. android之动态更改屏幕方向的简单例子(LANDSCAPE与PORTRAIT)!
  7. 深入了解Android(安卓)任务和进程
  8. Android(安卓)应用初始化及窗体事件的分发
  9. android的ITC

随机推荐

  1. 【Android】安卓AVD无法上网解决方案
  2. Android(安卓)Camera API2中采用CameraMe
  3. Android(安卓)Studio 完美修改应用包名
  4. Android 给textview添加下划线的一种方法
  5. android事件拦截处理机制图解
  6. android logcat鼠标悬浮提示过快
  7. android中intent传递数据的方式
  8. android check symbols in so
  9. 应用选择器
  10. Android(安卓)从入门到资深学习路线