From 4e7bf86f370fe4972284118e772477bf793ef8a2 Mon Sep 17 00:00:00 2001 From: ua1zbe Date: Fri, 9 Oct 2026 14:03:25 +0300 Subject: [PATCH] =?UTF-8?q?Stats:=20=D1=81=D1=87=D0=B8=D1=82=D0=B0=D1=82?= =?UTF-8?q?=D1=8C=20=D0=B7=D0=B0=D0=BF=D1=83=D1=81=D0=BA=D0=BE=D0=BC=20?= =?UTF-8?q?=D0=BA=D0=B0=D0=B6=D0=B4=D1=8B=D0=B9=20=D0=B2=D1=8B=D1=85=D0=BE?= =?UTF-8?q?=D0=B4=20=D0=BD=D0=B0=20=D0=BF=D0=B5=D1=80=D0=B5=D0=B4=D0=BD?= =?UTF-8?q?=D0=B8=D0=B9=20=D0=BF=D0=BB=D0=B0=D0=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit SvxApp.onCreate вызывается один раз на процесс, поэтому при живом фоне повторные открытия не учитывались. Теперь считаем onStart ProcessLifecycleOwner (холодный старт и каждое открытие приложения). --- app/build.gradle.kts | 1 + .../main/java/ru/ua1zbe/svxremote/SvxApp.kt | 18 +++++++++++++++++- 2 files changed, 18 insertions(+), 1 deletion(-) 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() {