From a9e0a1269a1fc7614f65c0f64cd65ba5e7f810a4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Hur=C3=BDn?= Date: Mon, 6 May 2024 16:00:38 +0200 Subject: [PATCH] Fixed startup job, show only future values in forecast screen --- .../yourlocalweather/adapter/WeatherForecastAdapter.java | 7 ++++++- .../yourlocalweather/service/ScreenOnOffUpdateService.java | 1 + .../yourlocalweather/service/StartAutoLocationJob.java | 4 ++-- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/org/thosp/yourlocalweather/adapter/WeatherForecastAdapter.java b/app/src/main/java/org/thosp/yourlocalweather/adapter/WeatherForecastAdapter.java index 409657ad..8f7c6ef6 100644 --- a/app/src/main/java/org/thosp/yourlocalweather/adapter/WeatherForecastAdapter.java +++ b/app/src/main/java/org/thosp/yourlocalweather/adapter/WeatherForecastAdapter.java @@ -59,12 +59,17 @@ public WeatherForecastAdapter(Context context, mWeatherList = new HashMap<>(); keys = new ArrayList<>(); + long now = System.currentTimeMillis(); Calendar forecastCalendar = Calendar.getInstance(); for (DetailedWeatherForecast forecast: weatherForecastList) { if (forecast == null) { continue; } - forecastCalendar.setTimeInMillis(forecast.getDateTime() * 1000); + long forecastDateTimeInMs = forecast.getDateTime() * 1000; + if (forecastDateTimeInMs < now) { + continue; + } + forecastCalendar.setTimeInMillis(forecastDateTimeInMs); int forecastDay = forecastCalendar.get(Calendar.DAY_OF_YEAR); if (!mWeatherList.keySet().contains(forecastDay)) { List dayForecastList = new ArrayList<>(); diff --git a/app/src/main/java/org/thosp/yourlocalweather/service/ScreenOnOffUpdateService.java b/app/src/main/java/org/thosp/yourlocalweather/service/ScreenOnOffUpdateService.java index 4c8df5b6..5f37688d 100644 --- a/app/src/main/java/org/thosp/yourlocalweather/service/ScreenOnOffUpdateService.java +++ b/app/src/main/java/org/thosp/yourlocalweather/service/ScreenOnOffUpdateService.java @@ -203,6 +203,7 @@ public void handleMessage(Message inputMessage) { }; private void processScreenOn(Context context) { + WidgetUtils.updateWidgets(context); Message completeMessage = handler.obtainMessage(); completeMessage.obj = context; diff --git a/app/src/main/java/org/thosp/yourlocalweather/service/StartAutoLocationJob.java b/app/src/main/java/org/thosp/yourlocalweather/service/StartAutoLocationJob.java index 911312da..279010c1 100644 --- a/app/src/main/java/org/thosp/yourlocalweather/service/StartAutoLocationJob.java +++ b/app/src/main/java/org/thosp/yourlocalweather/service/StartAutoLocationJob.java @@ -45,12 +45,12 @@ private enum Updated { @Override public boolean onStartJob(JobParameters params) { this.params = params; + appendLog(this, TAG, "onStartJob"); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE) { - setNotification(params, NotificationUtils.NOTIFICATION_ID, NotificationUtils.getNotificationForActivity(this), + setNotification(params, NotificationUtils.NOTIFICATION_ID, NotificationUtils.getNoWeatherNotification(this), JobService.JOB_END_NOTIFICATION_POLICY_DETACH); } YourLocalWeather.executor.submit(() -> { - appendLog(this, TAG, "onStartJob"); try { performUpdateOfLocation(); startSensorBasedUpdates();