Jef*_*man 6 android android-appwidget
我有一个小部件,需要在onUpdate()中执行可能长时间运行的操作.只是直接执行操作导致ANR.为了解决这个问题,我的第一次尝试是在其中创建一个线程.我注意到在某些情况下小部件不会更新.我的猜测是,一旦onUpdate()退出,android可能会杀死进程以及未完成的线程.
我的下一次尝试是创建一个意向服务.小部件的onUpdate()只是启动intent服务,它直接完成工作并在完成后更新小部件.这很有用,但令我惊讶的是,onHandleIntent()似乎是单线程的.如果我有两个小部件,然后更新并启动意向服务,它们会按顺序更新...
两个小部件的情况并不重要,但我只是想知道这种模式的最佳实践.
为了解决这两个小部件的情况,每当点击其中任何一个时,我都会用相同的数据更新所有小部件实例.例如,我执行一次长时间运行的过程并将结果应用于所有小部件实例.在我的场景中这没关系,但对于许多小部件来说,重要的是不要这样做.
想法?
但令我惊讶的是 onHandleIntent() 似乎是单线程的
是的。
如果我有两个小部件,然后都更新并启动意图服务,它们会按顺序更新......
是的。
但我只是想知道这种模式的最佳实践。
恕我直言,你IntentService
是一个很好的解决方案。请记住,Android 运行在较慢的 CPU 上,并且设备的 RAM 很少。并行运行大量线程通常不是一个好主意。
然后我开始在 onHandleIntent() 中启动一个线程,这需要一个唤醒锁,而且看起来它变得太复杂了。
试试我的WakefulIntentService
.
归档时间: |
|
查看次数: |
2294 次 |
最近记录: |