永远不会结束后台线程?

时间:2011-02-06 05:21:22

标签: android multithreading android-asynctask timertask

我目前有一个从Web服务器创建时填充的列表视图。我希望它能够定期轮询数据库以获取更新,或者允许php脚本更新它。我希望它由数据库更新,而不是轮询。

就轮询而言,我知道我可以实现服务或异步传输。我也找到了timertask类。

对于AsyncThread:我可以连续反复出现这种情况吗?我会从

中调用.start方法吗?

对于TimerTask:这比asyncthread或服务效率低吗?

我还需要在线程内创建TimerTask吗?或者它会创建自己的线程吗?

1 个答案:

答案 0 :(得分:1)

尝试将服务器转变为客户端,将客户端转变为服务器,就像试图通过错误的口吃掉一样。它与原始设计的本质作斗争。

首先,您不能依赖您的应用程序持续开启,而不是依赖电话。手机上的应用程序优先级较低。手机上的应用可以使用有限的能量。手机上的应用也并不总是连接到互联网。

因此,首先,您需要在自己的线程上使用服务(如果您愿意,可以使用AsyncTask)。您的服务将需要自己的线程,因此它不会阻止等待响应的UI线程。并且您将需要使用AlarmManager根据需要唤醒或终止您的服务(因为您的服务必然会被杀死几次,而不是自己的错误。)