Android 异步重复计划任务
如何创建一个Android 异步重复计划任务,android,android-asynctask,Android,Android Asynctask,如何创建一个AsyncTask,它在固定的时间间隔后继续运行 例如,每5分钟从服务器获取一次数据,并通知调用线程它已经收到数据。我在论坛上搜索了一下,但没找到多少。到目前为止,我收集到的是 1) UI线程将调用AsyncTask 2) onPrExecute用于执行前的UI线程访问 3) OnPostExecute用于执行后的UI线程访问 我不需要向用户显示任何进度更新。此外,当应用程序关闭时,任务将被销毁。这方面的任何教程都会很有帮助,正如评论中的其他建议一样。因此,让我详细阐述一下 不要使用
AsyncTask
,它在固定的时间间隔后继续运行
例如,每5分钟从服务器获取一次数据,并通知调用线程它已经收到数据。我在论坛上搜索了一下,但没找到多少。到目前为止,我收集到的是
1) UI线程将调用AsyncTask
2) onPrExecute
用于执行前的UI线程访问
3) OnPostExecute
用于执行后的UI线程访问
我不需要向用户显示任何进度更新。此外,当应用程序关闭时,任务将被销毁。这方面的任何教程都会很有帮助,正如评论中的其他建议一样。因此,让我详细阐述一下 不要使用异步任务。相反,只使用IntentService
您可以使用计划以固定速率重复
异步任务。尝试此操作
-更好地使用服务
使这项工作反复进行
-现在您可以使用绑定或未绑定的服务
。如果希望服务绑定到活动,则使用绑定服务,否则使用未绑定服务
-如果使用IntentService
会更好,因为这里您不需要任务继续运行,而是在一定时间后运行。
查看此链接:
我编写了一个应用程序,它定期触发AsyncTask
s,但即使在应用程序关闭时它们也会持续。不管怎样,我要做的是:
创建一个pendingent
(通过getBroadcast()
)包含包含操作的Intent
将pendingent
提供给系统的AlarmManager
,并设置间隔
在清单中声明一个BroadcastReceiver
,以捕获提供给1号中的Intent
的操作字符串
在BroadcastReceiver
的onReceive()
方法中,启动AsyncTask
我希望你使用服务。使用服务和报警服务manager@hotveryspicy:那样的话,我们的服务会更好吗?因为我不需要处理多个请求。另外,是否有任何教程取决于您,因为它是服务本身的子类,IntentService
是最好的,因为它们在单独的线程中运行,并且一旦工作结束,也会被终止(隐式的),此外,它还通过创建一个请求队列来处理多个请求。@hotveryspicy:IntentService的任何教程在固定间隔后反复运行自己都无法单独完成这项工作。为什么我们需要异步任务呢。是的,我怎么能忘记呢。不要使用异步任务。IntentService能够做到异步任务需要将自身附加到上下文。通过遵循这一点,它将作为应用程序中的独立模块工作。它为注册到它的任何人提供更新。这将非常有效。相信我。AsyncTask需要为自己附加一个context
perfectoo。但是不要像AsyncTask
s?@hotveryspicy那样在主UI线程中运行IntentService
s,这不是真的。您需要调用execute()
方法使其在自己的线程中运行,但您只能从一个循环器线程(通常是主线程)调用它。这就是我在运行Asyntask时所说的,如果用户与UI进行任何交互,则用户会感觉到闪烁(这很糟糕)@Phil:所以我猜每次使用TimerTask时,asyncTask都会生成自己的线程,而不是在主或UI中运行thread@ankuj,这完全取决于如何实现itI。还应注意,如上所述,异步任务需要在循环器线程上启动。因此,您需要从主线程开始异步任务,时间间隔为一段时间,您可以使用Context.runOnUIThread
instance方法来完成。