From a4cbcad18b0eb9db728543339e1675706c5fce1b Mon Sep 17 00:00:00 2001 From: Daniil Popov Date: Mon, 8 Mar 2021 08:47:51 +0200 Subject: [PATCH] [android]: Initialize core before handle received broadcast Sometimes we can receive broadcast before the core is managed to be initialized. In this case, we need to initialize it. Signed-off-by: Daniil Popov --- .../mapswithme/maps/MwmBroadcastReceiver.java | 22 +++++++++++++++++++ .../location/TrackRecorderWakeReceiver.java | 9 +++++--- 2 files changed, 28 insertions(+), 3 deletions(-) create mode 100644 android/src/com/mapswithme/maps/MwmBroadcastReceiver.java diff --git a/android/src/com/mapswithme/maps/MwmBroadcastReceiver.java b/android/src/com/mapswithme/maps/MwmBroadcastReceiver.java new file mode 100644 index 0000000000..26a04f535e --- /dev/null +++ b/android/src/com/mapswithme/maps/MwmBroadcastReceiver.java @@ -0,0 +1,22 @@ +package com.mapswithme.maps; + +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; + +public abstract class MwmBroadcastReceiver extends BroadcastReceiver { + + protected abstract void onReceiveInitialized(@NonNull Context context, @Nullable Intent intent); + + @Override + public final void onReceive(Context context, Intent intent) + { + MwmApplication app = MwmApplication.from(context); + if (!app.arePlatformAndCoreInitialized() && !app.initCore()) + return; + onReceiveInitialized(context, intent); + } + +} diff --git a/android/src/com/mapswithme/maps/location/TrackRecorderWakeReceiver.java b/android/src/com/mapswithme/maps/location/TrackRecorderWakeReceiver.java index f0ceb42028..bd16bda533 100644 --- a/android/src/com/mapswithme/maps/location/TrackRecorderWakeReceiver.java +++ b/android/src/com/mapswithme/maps/location/TrackRecorderWakeReceiver.java @@ -1,23 +1,26 @@ package com.mapswithme.maps.location; -import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.util.Log; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; + +import com.mapswithme.maps.MwmBroadcastReceiver; import com.mapswithme.util.CrashlyticsUtils; import com.mapswithme.util.log.Logger; import com.mapswithme.util.log.LoggerFactory; import static com.mapswithme.maps.MwmApplication.backgroundTracker; -public class TrackRecorderWakeReceiver extends BroadcastReceiver +public class TrackRecorderWakeReceiver extends MwmBroadcastReceiver { private static final Logger LOGGER = LoggerFactory.INSTANCE.getLogger(LoggerFactory.Type.MISC); private static final String TAG = TrackRecorderWakeReceiver.class.getSimpleName(); @Override - public void onReceive(Context context, Intent intent) + public void onReceiveInitialized(@NonNull Context context, @Nullable Intent intent) { String msg = "onReceive: " + intent + " app in background = " + !backgroundTracker(context).isForeground();