作者cooper6334 (小恐龙)
看板AndroidDev
标题Re: [问题] 关於 Widget 传值
时间Mon Nov 19 22:57:04 2012
※ 引述《han01122 (屎倒淋头)》之铭言:
: 标题: [问题] 关於 Widget 传值
: 时间: Mon Nov 19 03:11:55 2012
:
: 最近接触android
: 想写一个时间设置+倒数计时器
: 然後传入桌面小部件
:
: 做法是先在主activity计算时,分,秒
:
: 计算完後开始倒数距离设置时间还有多久
:
: 想把计算出的值传入widget
:
: 请问有什麽方法在widget上接收呢
:
: 使用SharedPreferences方法可行吗?
:
: --
:
※ 发信站: 批踢踢实业坊(ptt.cc)
: ◆ From: 114.33.134.136
: → cooper6334:broadcast 11/19 12:45
: → han01122:请问我要如何取得主activity的值呢 11/19 16:14
: 推 ak2840:用File存取数值比较容易 11/19 21:25
: 推 sdyy:SharedPref 配APPLICATION 就可以了 11/19 22:14
: → sdyy:不过你要倒数计时应该是写在service而非Activity 11/19 22:16
使用File或是SharedPreference来传资料给AppWidget的话,
问题在於AppWidget什麽时候会知道这次的更新。
AppWidget正常来说应该会到设定的时间到了执行onUpdate才会来进行更新
而内建设定的更新时间最少是30分钟以免资源的消耗
所以会没办法即时的让AppWidget更新成新的状态
若是AppWidget一直用Thread或其他方式强制更新的话是可以这样做,
但是这种作法当然是很吃资源,而且原Po要的应该是使用者进行操作以後才开始显示,
在使用者没有要使用时还一直进行检查实在是不划算,
所以我会建议让原Po使用Broadcast的方式来触发这个事件
反正AppWidget本身就有实作onReceive,直接Override就可以了
不过要注意还是要执行super.onReceive以维持AppWidget本身的LifeCycle
至於AppWidget要显示的东西,假如只是使用者设定的时间的话就很好做,
但是如果需要在桌面同步进行倒数,
那应该还是要开一个Service来一直强迫AppWidget更新,
或是让AppWidget本身来进行倒数的回圈。
即使倒数中又回到Activity,从Activity拿到AppWidget里的东西也容易多了
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.112.91.176
※ 编辑: cooper6334 来自: 140.112.91.176 (11/19 23:03)