作者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/cn.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