安卓桌面小部件Widget的局限性及适用性

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了安卓桌面小部件Widget的局限性及适用性相关的知识,希望对你有一定的参考价值。

参考技术A 一、Widget并不支持所有的控件跟布局,而仅仅只是支持android布局和控件的一个子集。(当然也不支持自定义View)

1.支持的布局:

2.支持的控件:

二、Widget不支持Animation动画。

1.可以通过Bitmap、layoutAnimation和帧动画实现动画效果:

用这些方式虽然可以实现简单的动效,但是非常容易产生内存溢出问题,导致OOM和闪退。归根结底,Widget的设计是主打轻量化,需要长期放在桌面的Widget如果有大量动效,将会耗费大量系统性能和电量,这与它的设计初衷是相违背的。

2.动画效果和方位传感器测试:

动效:使用 setImageViewBitmap 方法设置简单的旋转动画,动画会在两分钟后停止播放。

传感器:在应用进入后台,执行 onStop 方法时,方位传感器会在一分钟后停止监听回调,此时后台Service正常运行,Widget时间正常更新,但是方位传感器不再回调监听。(经测试,开启前台Service才可以正常监听)

总结:非常不建议Widget需要动画或者调用传感器展示,在部分手机上会提示耗电异常,强制杀死程序。

三、进程保活:

进程保活涉及到的问题非常复杂,且越来越严格。测试了三款APP:

顺历:清除后台任务后Widget时间停止更新。

万年历:正常更新。

中华万年历:正常更新。

总结:顺历未设置保活方案,或保活失败。

万年历与中华万年历监听了系统时区改变广播、时间手动设置广播,在手动设置时间或时区后这两个Widget也同步更新。同时还有一个时间正常流逝的广播,系统每分钟会发送一次,但是这个广播在8.0系统以后不允许静态注册,也就是只能在APP运行的情况下才能监听这个广播。尚不清楚这两个APP如何保活,或是如何在8.0以上系统监听这个广播,达到即便杀死后台,也能每分钟刷新Widget时间的目的。

关键词“轻量化”

1.因为Widget主打轻量化,对动效支持较差,所以Widget界面以静态界面为主。

2.支持的布局和控件非常少,不支持自定义View,界面以简易布局为主。(如图片+文字)

3.实时性要求不高。(如每日一首古诗)

4.与用户简单互动。(如播放器的播放、暂停、下一曲)

以上是关于安卓桌面小部件Widget的局限性及适用性的主要内容,如果未能解决你的问题,请参考以下文章

安卓神器小部件,变快变爽似神仙

安卓智能手机之小部件怎么用?

android 创建桌面小部件widget

这8款Android桌面小部件,能让你的Android好用很多倍

Android小部件Widget----全解析

topwidget安卓怎么用相册里面的图片