我所拥有的:
一个包含两个选项卡的应用程序,一个用于即将交付,另一个用于过去交付。我在一个SQLite数据库中获取即将交付的信息,其中有效性日期高于当前日期,对于过去的交付,反之亦然(更新两个列表的ui )。
我想要的:
每一次交付都有一个有效日期,如果一次交付超过了他的有效日期,我希望它在“过去交货”选项卡中。
更多信息:
ViewPager,其中每个选项卡都包含一个带有RecyclerView的Fragment。FloatingActionButton),没有任何are服务。在android (或java)中是否有一个实用程序类来实现这种工作?
发布于 2018-10-09 16:04:50
第1部分
如果在后台安排一个可以更新表等的作业是您想要的,下面是答案:
我的建议是使用EverNote的“Android-作业”库。这个库与'JobScheduler‘和'AlarmManager’都有相同的功能,但是AndroidJobs库将为您处理API版本问题,因此您只需配置任务何时执行即可。即。InternetAvailable =true,interval =5 min& mins = true等(这是伪代码,但类似于它们的api)
它们的api很容易使用,并且可以安排任务,而不必担心SDK版本和使用多个Android来做同样的事情。
以下是gitHub链接:https://github.com/evernote/android-job
PART2
每一次交付都有一个有效日期,如果一次交付超过了他的有效日期,我希望它在“过去交货”选项卡中。
如果您只想更新UI而不更改表中的任何内容,则不需要使用调度程序和警报管理器(或)完成预定任务。
您可以做的是在您的活动中有一个处理程序线程,它每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);
}
}https://stackoverflow.com/questions/52723950
复制相似问题