一个带有两个标签的应用程序,一个用于即将交付的货物,另一个用于过去的交付。 我在有效日期高于当前日期的SQLite数据库中获取即将交付的货物,反之亦然,对于过去的交付(两个列表的更新ui)而言。
每个交货都有一个有效日期,如果交货超过了他的有效日期,我希望它在过去交货标签中。
其他信息:
ViewPager
,其中每个标签都包含一个Fragment
和一个RecyclerView
。FloatingActionButton
),没有网络服务。android sdk(或java)中是否有实用程序类来实现这种工作?
答案 0 :(得分:1)
如果要安排在后台工作的工作来更新表等,这就是您想要的,下面是答案:
我的建议是使用EverNote的“ Android-Job”库。 该库与“ JobScheduler”和“ AlarmManager”具有相同的功能,但是AndroidJobs库将为您解决API版本问题,因此您只需配置何时执行任务即可。 即。 InternetAvailable = true,间隔= 5分钟&充电= true等(这是伪代码,但类似于其api)
它们的api易于使用,可让您安排任务,而不必担心SDK版本和使用多个Android API来完成相同的事情。
这是gitHub链接:https://github.com/evernote/android-job
每个交货都有有效日期,如果交货通过 有效日期,我希望它在过去的“交付”标签中。
如果您只想更新UI而不更改表中的任何内容,则不需要使用计划程序和Alarm Manager(或Android-Job库)完成的计划任务。
您可以做的是在Activity中有一个处理程序线程,该线程每5秒执行一次(您可以更改时间)。
在下面的代码中,带有标签的活动启动一个Handler任务,该任务每5秒运行一次,在任务运行时,它告诉您的片段检查其数据。因此,每个片段现在可以每5秒检查一次它们是否具有正确的数据并重新绘制。
EG:
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);
}
}