Android常规任务(相当于cronjob)

Dec*_*ech 14 java cron android timer

最后一次问这个问题(由不同的用户),答案是:

如果这是在运行活动中,您可以使用Timer/TimerTask和Handler,或者您可以使用postDelayed()和AsyncTask.

这里:Android重复任务

我还在学习如何编程android.我已经完成了我所知道的技能,包括线程,并且我的代码存在很多问题.任何人都可以举例说明如何使用:time/timertask和handler OR postDelayed()和AsyncTask.

提前致谢 :)

Luc*_* S. 22

对于类似Cron的任务,您必须使用AlarmManager,这是一个系统服务,用于在您需要调用的代码中使用它:

AlarmManager myAlarmManager = Context.getSystemService(Context.ALARM_SERVICE).
Run Code Online (Sandbox Code Playgroud)

这里有关于AlarmManager的完整文档.


Mel*_*var 5

最合适的方法是通过服务.我通过查看Android附带的股票电子邮件应用程序的源代码学习了如何编写服务.

一般的想法是您覆盖Service类,并设置警报以激活您的服务.与后台程序和Windows服务不同,Android服务并不总是在运行 - 它们启动(通常由警报激活),执行工作,然后关闭.在某些情况下,您可能需要获取部分唤醒锁定以使服务继续运行直至完成任务 - 否则,Android可能会过早地终止您的服务.

  • 您有两种选择 - 您可以定期检查"更新鲜"的数据,或通过[ContentProvider](http://developer.android.com/guide/topics/providers/content-providers.html)执行所有写操作.在这种情况下,[CursorAdapter](http://developer.android.com/reference/android/widget/CursorAdapter.html)将自动更新依赖此类数据的任何列表,您可以使用[ContentObserver](http:/ /developer.android.com/reference/android/database/ContentObserver.html)通知其他内容的更新. (2认同)

Rob*_*oli 4

如果你想构建一个 cronjob 运行程序,那么你需要的是一个Service

服务是一个应用程序组件,可以在后台执行长时间运行的操作,并且不提供用户界面。另一个应用程序组件可以启动一个服务,即使用户切换到另一个应用程序,它也会继续在后台运行。此外,组件可以绑定到服务以与其交互,甚至执行进程间通信(IPC)。例如,服务可能会在后台处理网络事务、播放音乐、执行文件 I/O 或与内容提供商交互。

  • 服务与 cronjob 不太相似,请参阅下面有关 AlarmManager 的答案。 (3认同)