Происходит на экране блокировки [Выполнение остановки действия, которое уже остановлено: {package.LockScreenActivity}] - PullRequest
0 голосов
/ 20 ноября 2018

Я реализовал приложение экрана блокировки Android.

При выполнении LockScreenActivity возникла исключительная ситуация RuntimeException (независимо от версии Android).Но это Исключение происходит очень периодически и не передается Crashlytics.

Содержимое Исключения:

2018-11-20 16:09:10.037 7657-7657/hanmo.com.drinkingwaterassistant E/ActivityThread: Performing stop of activity that is already stopped: {hanmo.com.drinkingwaterassistant/hanmo.com.drinkingwaterassistant.lockscreen.LockScreenActivity}
    java.lang.RuntimeException: Performing stop of activity that is already stopped: {hanmo.com.drinkingwaterassistant/hanmo.com.drinkingwaterassistant.lockscreen.LockScreenActivity}
        at android.app.ActivityThread.performStopActivityInner(ActivityThread.java:4200)
        at android.app.ActivityThread.handleStopActivity(ActivityThread.java:4288)
        at android.app.ActivityThread.-wrap25(Unknown Source:0)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1730)
        at android.os.Handler.dispatchMessage(Handler.java:105)
        at android.os.Looper.loop(Looper.java:164)
        at android.app.ActivityThread.main(ActivityThread.java:6938)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)

Во-первых, я воспроизвел это прерывистое исключение, которое возникало, когда я хотелк.

Условия для воспроизведения следующие.

  • Дано: Экран блокировки Действие запущено.
  • Когда: запускДействие для прозрачных действий
  • Тогда: происходит Исключение, что (выполнение остановки действия, которое уже остановлено)

Стиль для прозрачного действия:

<style name="transparentView" parent="android:Theme.Translucent">
    <item name="windowActionBar">false</item>
    <item name="windowNoTitle">true</item>
    <item name="android:windowBackground">@android:color/transparent</item>
    <item name="android:colorBackgroundCacheHint">@null</item>
    <item name="android:windowIsTranslucent">true</item>
    <item name="android:windowAnimationStyle">@android:style/Animation</item>
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowContentOverlay">@null</item>
    <item name="android:backgroundDimEnabled">false</item>
</style>

Происходит, когда прозрачное действие появляется наlockScreenActivity.

Итак, я сделал непрозрачный lockScreenActivity.Тем не менее, Исключение сохраняется с перерывами.

Я хочу знать причину этого исключения.


Здесьмои подозрительные части LockScreenActivity.

Манифест

<activity android:name=".lockscreen.LockScreenActivity"
        android:showOnLockScreen="true"
        android:launchMode="singleInstance" />

onWindowFocusИзменено в LockScreenActivity

override fun onWindowFocusChanged(hasFocus: Boolean) {
        super.onWindowFocusChanged(hasFocus)
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
            if (hasFocus) window.decorView.systemUiVisibility = (
                    View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
                            or View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                            or View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
                            or View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                    )
        }
    }

onAttachedToWindow в LockScreenActivity

override fun onAttachedToWindow() {
        window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON
                or WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD
                or WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
        )

        window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
        super.onAttachedToWindow()
    }

Admob в LockScreenActivity

<com.google.android.gms.ads.AdView
            android:id="@+id/adView"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:background="@drawable/transparent"
            app:adSize="SMART_BANNER"
            app:adUnitId="@string/admobBanner"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintHorizontal_bias="1.0"
            app:layout_constraintStart_toStartOf="parent" />

И мой LockScreenActivity Пример здесь

...