我只想每天在特定的时间发出当地的推送通知!我在文档中发现我可以做到这一点。以下代码:
public class MyDailyNotMorning extends DailyJob {
public static final String TAG = "MyDailyJob";
public static void schedule() {
// schedule between 1 and 6 *PM*
DailyJob.schedule(builder, TimeUnit.HOURS.toMillis(1), TimeUnit.HOURS.toMillis(6));
}
@NonNull
@Override
protected DailyJobResult onRunDailyJob(Params params) {
PendingIntent pi = PendingIntent.getActivity(getContext(), 0,
new Intent(getContext(), MainActivity.class), 0);
Notification notification = new NotificationCompat.Builder(getContext())
.setContentTitle("Morning")
.setContentText("It's time to send a photo!")
.setAutoCancel(true)
.setContentIntent(pi)
.setSmallIcon(R.mipmap.ic_launcher)
.setShowWhen(true)
// .setColor(Color.RED)
.setLocalOnly(true)
.build();
NotificationManagerCompat.from(getContext())
.notify(new Random().nextInt(), notification);
Log.d("myTag", "onRunJob: notification setted daily success:morning");
return DailyJobResult.SUCCESS;
}
}在这种情况下,假设通知在凌晨1点(或下午1点)接收,所以问题是该方法的第二个参数是什么。或者如何在上午8点(上午8点)实现“接收本地通知”。不是下午)?请帮帮我?!
发布于 2018-08-12 08:55:23
来自文档的注释:
//时间:上午1时至6时
DailyJob.schedule(new JobRequest.Builder(TAG), TimeUnit.HOURS.toMillis(1),TimeUnit.HOURS.toMillis(6));现在不是下午。如果你试着18:00,现在是下午,它是24小时钟.
码
这是我的理论思考(测试需要) ,,但您可以在下面尝试一下,然后评论一下如果成功的话。
您可以在DailyJob 08:00和08:00:05之间设置。这意味着开始时间和结束时间之间有5秒的差别。
您可以像以前一样使用TimeUnit.Seconds.toMillis(5) ,。
public class Tasker extends DailyJob {
static final String TAG = "do_update_value_job_tag";
static void schedulePeriodic(Context context) {
Long startMs = TimeUnit.HOURS.toMillis(8);
Long endMs = TimeUnit.HOURS.toMillis(8) + TimeUnit.SECONDS.toMillis(5); //←←←
JobRequest.Builder requestByTag = new JobRequest.Builder(Tasker.TAG).setUpdateCurrent(true);
DailyJob.schedule(requestByTag, startMs, endMs);
}
@NonNull
@Override
protected DailyJobResult onRunDailyJob(@NonNull Params params) {
//do stuff
return DailyJobResult.SUCCESS;
}
@Override
protected void onCancel() {
//do stuff
super.onCancel();
}
}https://stackoverflow.com/questions/51806971
复制相似问题