這是發生在我寫 Photo Clock Widget 的一個長久以來的 Bug , 就是我的手機(Galaxy S2) 當我使用了三星手機內建的工作管理員 , 並且去做了清除記憶體的動作後 , 我發現有時候會讓我的 Widget 恢復為預設的 Widget 畫面
這個挺妙的 , 小弟剛學 Android 不久 , 我翻遍 Android SDK , 無法去找到相關的事件來偵測當 桌面程序有作一些回收或異動的方法 , 但是我在 AppWidgetProvider 的 onReceive() 中發現了一道很怪異的 broadcast message 包含了 com.sec.android.widgetapp.APPWIDGET_RESIZE 這一串字 , 原來啊 !!!! 就是這個搞鬼
這串 Action 根本不是SDK標準所提供的 , 這是三星特有的 , 也就是說 , 三星手機在使用了工作管理員的清除記憶體動作後 , 可能會回收所有的 RemoteView UI , 然後這個事件 (com.sec.android.widgetapp.APPWIDGET_RESIZE) 會發給所有的 AppWidgetProvider !
但它回收歸回收 , 竟然也不會有 ACTION_APPWIDGET_UPDATE 等標準事件 , 這令我很火大 , 雖然特別加上了判斷三星獨特的事件來解決 Bug , 但不知道其他的手機是否也會有類似的行為 , 我很想痛罵三星 , 為何不引發標準事件 !
我也心裡痛駡三星好久了。在做攝像相關的APP的時候,我從設備中獲取其所支持的分辨率額然後設置一個較為中檔的分辨率,結果我設置的參數三星的機器根本就不生效,還是會按最大的分辨率來進行攝像,而在別的設備上設置后都是生效的。所以這讓我很惱火;
還有,最近在改善拍照片的APP,同樣也是三星。我設置Camera的參數Rotate,幾乎所有的機器都有效,唯獨三星的怎麼設置都無用。我真是想罵娘,三星的用戶也很多,我很無奈。
Add me on google+ ([email protected]) if you want to communicate more about the issue of developing on SAMSUNG.
I hate SAMSUNG!!!
有個補充,請問您在程序中是怎樣去判斷是三星的機器的,因為三星的型號眾多,我不知道怎麼才能做出判斷。
我是不小心判斷到的 . 主要是把 onReceive 收到的 都 log 起來