android - 每天在固定时间后运行一个方法
问题描述
我的应用程序中有功能,用户可以选择他想从应用程序获取通知的时间。在这种情况下,我以这种格式从用户那里获取输入12:00 AM
。我编写了一个在我的应用程序中创建通知的方法,该方法运行良好,但我想每天在用户选择的时间调用该方法。此外,如果应用程序被完全破坏甚至没有在后台运行,是否会在每天用户选择的时间调用此方法?
String user_time=tinyDB.getString("app_check_time"); // This is user selected time e.g, 12:00 PM
Calendar calendar = Calendar.getInstance();
Date date1 = null;
try {
date1=new SimpleDateFormat("h:m a").parse(user_time);
} catch (ParseException e) {
e.printStackTrace();
}
calendar.set(Calendar.HOUR_OF_DAY, date1.getHours());
calendar.set(Calendar.MINUTE, date1.getMinutes());
Date time = calendar.getTime();
System.out.println("hourr "+time);
timer = new Timer();
timer.schedule(new createNotification(), time);
解决方案
您是否考虑过使用 Quartz Scheduler 之类的东西?这个库有一种机制,可以使用类似 cron 的表达式来安排任务在每天设定的时间段内运行(看看 CronScheduleBuilder)。
一些示例代码(未测试):
public class GetDatabaseJob implements InterruptableJob
{
public void execute(JobExecutionContext arg0) throws JobExecutionException
{
getFromDatabase();
}
}
public class Example
{
public static void main(String[] args)
{
JobDetails job = JobBuilder.newJob(GetDatabaseJob.class);
// Schedule to run at 5 AM every day
ScheduleBuilder scheduleBuilder =
CronScheduleBuilder.cronSchedule("0 0 5 * * ?");
Trigger trigger = TriggerBuilder.newTrigger().
withSchedule(scheduleBuilder).build();
Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
scheduler.scheduleJob(job, trigger);
scheduler.start();
} }
前面还有一些工作要做,你可能需要重写你的作业执行代码,但它应该让你更好地控制你希望你的作业如何运行。此外,如果您需要,更改时间表会更容易
推荐阅读
- sql-server - 在sql中转换日期格式
- android - 实现 Azure 通信服务 - Android 应用程序中的聊天
- python - 访问在安装在 unix 服务器上的 Docker 容器上运行的 jupyter
- qt - 如何在 Qt 5.12 和 Qt Quick Controls 2 的 TableView 中支持行选择?
- postgresql - 如何在 typeorm 中使用 LEFT JOIN LATERAL?
- c# - 在 Blazor 组件中使用 Javascript addEventListener
- javascript - Puppeteer 图像 src 选择器不适用于所有组件
- python - 函数“矩形”中的(-5:错误参数) - 无法解析“pt1”。索引为 0 的序列项类型错误
- c - 产生竞争条件
- excel - Excel:- 多级表中的差异 b/w 枢轴值 col