1.支持的布局:
2.支持的控件:
第二,Widget不支持動畫動畫。
1.動畫效果可以通過位圖、layoutAnimation和幀動畫實現:
這些方法雖然可以實現簡單的動態效果,但是非常容易造成內存溢出問題,導致OOM和閃回。歸根結底,小部件的設計重點在於輕量級。需要長時間放在桌面上的小部件,如果有大量的動態效果,會消耗大量的系統性能和電量,這違背了它的設計初衷。
2.動畫效果和方向傳感器測試:
動態效果:使用setImageViewBitmap方法設置壹個簡單的旋轉動畫,兩分鐘後動畫將停止播放。
Sensor:當應用程序進入後臺執行onStop方法時,方位傳感器會在壹分鐘後停止監聽並回調,此時後臺服務會正常運行,Widget時間會正常更新,但方位傳感器不再回調監聽。(經測試,只需開通前臺服務即可正常監控。)
總結:強烈建議Widget需要動畫或者來電傳感器顯示,部分手機會提示電量異常,強行殺死程序。
第三,保持活力的過程:
進程保活所涉及的問題非常復雜,而且越來越嚴格。測試了三款應用:
日歷:清除後臺任務後,小部件時間停止更新。
萬年歷:正常更新。
中國日歷:正常更新。
摘要:日歷中沒有設置保活方案,或者保活失敗。
萬年歷和中國萬年歷監控系統時區變更廣播和時間手動設置廣播,手動設置時間或時區後這兩個Widget同步更新。同時還有壹個正常延時的廣播,系統會每分鐘發壹次,但是這個廣播在8.0系統之後就不允許靜態註冊了,也就是只能在APP運行的時候監控。目前還不清楚這兩個app是如何保持活躍度的,或者說是如何在8.0以上的系統上監控這個廣播,做到即使後臺被殺也能每分鐘刷新壹次Widget時間。
關鍵詞“輕量級”
1.由於Widget側重於輕量級,對動態效果的支持較差,所以Widget界面主要是靜態的。
2.支持的布局和控件非常少,並且不支持自定義視圖。界面以簡單布局為主。(如圖片+文字)
3.實時性要求不高。(比如每天壹首古詩)
4.與用戶的簡單交互。(例如,播放器播放、暫停、下壹首歌曲)