作者camel521 (Camel)
看板AndroidDev
標題[問題] 使widget變殭屍的原因...?
時間Tue May 13 19:03:42 2014
大家好 : )
想請教各位前輩開發widget時有沒有遇到過
"一開始update與一般運作都正常,但一段時間過後widget就被打回原型
(預設的layout),且完全不能點不能動" 的狀況呢@@??
因使用自己的手機做測試一直沒有發生類似的問題,所以沒有錯誤報告可以參考...
這兩天也用了各種想到的關鍵字去google,找出以下可能的狀況:
1. 將onUpdate裡的動作移到Service執行,可避免它來不及做完
但若是使用者一開始有一段時間的update是可以正常執行的話,
是不是表示這段在onUpdate裡面的code並不會太長呢...?
還是是我鴕鳥心態解讀錯誤了... :p
2. 爬了板上的文章發現可能有pendingIntent flag設錯的問題(?)導致widget不能點,
檢查程式碼之後確定flag設定應是正確的...
又回到一直覺得 "使用者一開始有一段時間可以正常使用" 的鴕鳥點@@
3. google發現有可能是當手機記憶體不足時,appwidget provider被 "殺死" (?!)
但這個狀況... 不才的原PO實在看不懂最後網友解決的方法是什麼 囧
:) well I did that eventually, but i was thinking it to be a bad hack. I
actually have 3 entities a WakeAliveService in my code, a WidgetUpdateService
and the AppWidgetProvider. WakeAliveService sends periodic broadcasts which
are picked up by the WidgetUpdateService to update the widgets in a list
stored in ApplicationClass. AppWidgetProvider updates the list with ids in
OnUpdate / OnDelete. When the widget id is updated the list is saved back to
prefs. When Application starts again the list is read. On a reboot this list
is cleared. DO you think this is a right approach ?
想請教大家不知有沒有類似的開發經驗可以分享呢@@...
也跪求關於上面英文的解讀 T^T
呼~~ 真的還有很長一段的學習路要走 : )
先說聲謝謝大家 <(_ _)>
感恩~~~~
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.240.111.94
※ 文章網址: http://webptt.com/m.aspx?n=bbs/AndroidDev/M.1399979025.A.7F7.html
1F:推 doom3:是4.4嗎? 05/13 21:54
2F:→ camel521:程式的target是4.4,不過自己使用的裝置是4.1,目前發現 05/13 22:07
3F:→ camel521:會變殭屍的有note2與4.0 @@ 但另外一位朋友的note2卻又是 05/13 22:08
4F:→ camel521:正常的... 等等腦袋清醒一點再來嘗試看看上面那段英文字 05/13 22:09
5F:→ camel521:若有找到答案會再PO上來跟大家分享!! 希望可以!!! 哈... 05/13 22:10
6F:推 tac0wu:那段的解法真的太hack了 或許說很多餘 應該要有更好的解法 05/13 23:08
7F:→ camel521:今天想到一個新的辦法... 從Activity裡面增加一個可以更 05/14 12:29
8F:→ camel521:新所有widget的按鈕,再請會變殭屍的朋友(?!)幫忙測測看 05/14 12:30
9F:→ camel521:能不能按那個鈕把widget救回來 =p... 測試後若可行會再補 05/14 12:31
10F:→ camel521:上後續狀況,謝謝大家 =) 05/14 12:31
11F:→ camel521:這個方法似乎行不通… 不知道是不是widget provider完全 05/16 19:52
12F:→ camel521:不能執行onUpdate方法的關係… 05/16 19:52
13F:推 tac0wu:你是怎麼叫activity更新widget的 broadcast intent嗎? 05/16 21:59
14F:→ camel521:後來發現原來是寫錯了根本沒有呼叫到onUpdate..(烏龍^^") 05/17 07:04
15F:→ camel521:是的是的,用intent send brocast讓onReceive接收Action 05/17 07:05
16F:→ camel521:再用更新版讓朋友測測看一次=) 希望這次會成功!! 哈~~ 05/17 07:06
17F:→ camel521:成功將殭屍widget救回!! 使用了下面連結的方法,把它補上 05/23 15:16
18F:→ camel521:來希望能對以後遇到相同問題的人有幫助 ^^ 05/23 15:16