android - Schedule tasks for later
问题描述
What I have :
An application with two tabs, one for upcoming deliveries and one for past deliveries. I fetch the upcoming deliveries in a SQLite database where validity date is upper than current date and vice-versa for past deliveries (update ui of the two list).
What I want :
Each deliveries has a validity date, and if a delivery pass his validity date, I would like that it go in the past delivery tab.
Further information :
- The two tabs are added with a
ViewPager
which contains for each aFragment
with aRecyclerView
. - These deliveries are added by myself (by a
FloatingActionButton
), there is no webservices. - Scope of SDK Version is 17 to 28
Is there an utility class in android sdk (or java) to achieve this kind of job ?
解决方案
第1部分
如果安排在后台工作以更新表格等的作业是您想要的,下面是答案:
我的建议是使用 EverNote 的“Android-Job”库。这个库与“JobScheduler”和“AlarmManager”做同样的事情,但是AndroidJobs 库会为你处理API 版本问题,所以你可以配置你的任务应该在什么时候执行。IE。InternetAvailable = true , interval = 5 mins &charging =true 等(这是伪代码,但它类似于他们的 api)
他们的 api 易于使用,让您可以安排任务,而不必担心 SDK 版本和使用多个 Android API 来做同样的事情。
这是 gitHub 链接:https ://github.com/evernote/android-job
第2部分
每个交货都有一个有效期,如果交货超过了他的有效期,我希望它进入过去的交货选项卡。
如果您只想更新 UI 而不更改表中的任何内容,则不需要使用调度程序和警报管理器(或 Android-Job 库)完成的计划任务。
您可以做的是在您的 Activity 中有一个处理程序线程,每 5 秒执行一次(您可以更改时间)。
在下面的代码中,带有选项卡的活动启动了一个 Handler 任务,该任务每 5 秒运行一次,并且在任务运行时,它会告诉您的片段检查它的数据。因此,每个片段现在可以每 5 秒检查一次它们拥有的数据是否正确并重绘。
例如:
import android.os.Handler;
MyActivity extends Activity {
private UpcomingDeliverFragment UpcomingFragment;
private PastDeliverFragment pastFragment;
private Handler handler = new Handler()
private Runnable runnable = new Runnable() {
@Override
public void run() {
UpcomingFragment.checkDataSet();
pastFragment.checkDataSet();
startHandler(); // so the task runs again after 5 secs
}
};
private onResume() {
startHandler();
}
private onPause() {
stopHandler(); // very important
}
private fun startHandler() {
handler.postDelayed(runnable, 5000);
}
private fun stopHandler() {
handler.removeCallbacks(runnable);
}
}
推荐阅读
- twitter - 如何使用 tweepy 只获得新的关注者?
- typescript - NestJs项目中枚举的使用
- python - 用于解析 xml 文件并对 uuid 进行排序的 Python 脚本
- python - 当我尝试在我的 macOS 上编译 skia 时出现跳过“../src”错误 [我试图编译 aseprite]
- vim - 在 Vim 中以编程方式关闭多个缓冲区
- c++ - 快速 C++ 查询 RE 从函数返回字符串
- dotnetnuke - 内置 2sxc 操作缺少图标
- php - 为什么 Recaptcha 不能使用带参数的 url?
- r - R ifelse 多个条件
- perl - 如果 Perl 已经链接到 libm,为什么没有任何功能向用户公开?