diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 4154a8f..511c5dd 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -44,6 +44,7 @@ kotlin { dependencies { implementation("ru.rustore.sdk:pushclient:7.4.0") + implementation("androidx.lifecycle:lifecycle-process:2.7.0") testImplementation("junit:junit:4.13.2") } diff --git a/app/src/main/java/ru/ua1zbe/svxremote/SvxApp.kt b/app/src/main/java/ru/ua1zbe/svxremote/SvxApp.kt index 8906543..e76fec7 100644 --- a/app/src/main/java/ru/ua1zbe/svxremote/SvxApp.kt +++ b/app/src/main/java/ru/ua1zbe/svxremote/SvxApp.kt @@ -4,6 +4,9 @@ import android.app.Application import android.app.NotificationChannel import android.app.NotificationManager import android.util.Log +import androidx.lifecycle.DefaultLifecycleObserver +import androidx.lifecycle.LifecycleOwner +import androidx.lifecycle.ProcessLifecycleOwner import ru.rustore.sdk.pushclient.RuStorePushClient import ru.ua1zbe.svxremote.prefs.Prefs @@ -17,7 +20,20 @@ class SvxApp : Application() { super.onCreate() createPushChannel() initRuStorePush() - StatsReporter.report(this) + trackLaunches() + } + + /** + * Считаем запуском каждый вывод приложения на передний план (холодный старт + * и повторное открытие), а не только создание процесса — иначе при живом + * процессе в фоне повторные открытия не учитывались бы. + */ + private fun trackLaunches() { + ProcessLifecycleOwner.get().lifecycle.addObserver(object : DefaultLifecycleObserver { + override fun onStart(owner: LifecycleOwner) { + StatsReporter.report(this@SvxApp) + } + }) } private fun createPushChannel() {