我正在按照Jeff Shakey的教程http://android-developers.blogspot.com/2009/04/introducing-home-screen-widgets-and.html编写一个主屏幕小部件。
本教程使用服务来避免任何ANR超时。我只是想知道,我可以使用Thread而不是服务来完成获取数据和更新RemoteViews的工作吗?我不想创建服务,因为Thread更容易处理并将数据传递给Thread。
感谢。
答案 0 :(得分:4)
你不应该依赖线程。它不能保证工作。根据类似情况下的经验,线程方法在仿真器和三星星系上工作但在g1上不可靠。所以你应该尝试使用服务。这很容易:在清单和startService中定义。通过意图传递数据有点麻烦,但它是可管理的,整个方法肯定更强大。
答案 1 :(得分:3)
我读了一篇文章说,为了避免ANR,服务有时是不够的。需要线程。
请参阅:http://blog.elsdoerfer.name/2009/06/03/writing-an-android-widget-what-the-docs-dont-tell-you/
“如果您正在执行可能需要更长时间的操作,则鼓励您使用服务来执行窗口小部件更新,以避免应用程序无响应(ANR)超时。但是,这通常是不够的。 .....
解决方案是让您的服务启动一个单独的线程。举个例子,请参阅Jeffrey Sharkey的android-sky Widget。“
有什么想法吗?