当我在装有Android 9 Pie的设备(Google Pixel 2)上运行我的应用并打开(或关闭)省电模式时,整个活动会立即重新启动。 当我在6、7和8等较低版本的Android上打开省电模式时,应用程序将继续正常运行而无需重新启动。是否可以防止在Android 9上重新发布?
我对其进行了调查,发现,当您打开省电模式时,甚至新的本机“夜间”模式也会自动打开。因此,我尝试通过“设置-开发人员选项”仅打开夜间模式,并且重新启动活动的方式与打开省电模式相同。因此,这种重新启动可能是由“夜间”模式引起的。
注意:请勿混淆“夜灯”,“黑暗主题”和“夜模式”,它们是不同的,问题仅在于“夜模式”。
这是调试器的堆栈跟踪,可以看到,操作系统试图通过停止活动来重新启动活动(然后再次创建活动)。
onStop:579, MyActivity (com.mypackage)
callActivityOnStop:1432, Instrumentation (android.app)
performStop:7375, Activity (android.app)
callActivityOnStop:4181, ActivityThread (android.app)
handleRelaunchActivityInner:4796, ActivityThread (android.app)
handleRelaunchActivity:4732, ActivityThread (android.app)
execute:69, ActivityRelaunchItem (android.app.servertransaction)
executeCallbacks:108, TransactionExecutor (android.app.servertransaction)
execute:68, TransactionExecutor (android.app.servertransaction)
handleMessage:1816, ActivityThread$H (android.app)
dispatchMessage:106, Handler (android.os)
loop:193, Looper (android.os)
main:6718, ActivityThread (android.app)
invoke:-1, Method (java.lang.reflect)
run:493, RuntimeInit$MethodAndArgsCaller (com.android.internal.os)
main:858, ZygoteInit (com.android.internal.os)
我在这里https://developer.android.com/about/versions/pie/power读到,在新的Android上,省电模式有所变化,但是我没有找到任何详细信息和建议来解决可能的问题。 你能帮我吗?
实际结果:我运行我的应用并打开/关闭电池保护程序->重新启动整个主要活动,因此将其停止,然后尝试以新创建的方式运行。
预期结果:我运行我的应用程序并打开/关闭了省电模式->我的应用程序没有任何反应,由于没有任何反应,它继续了其主要活动。
谢谢。
答案 0 :(得分:1)
我自己弄清楚了,所以在这里发布答案(来自https://github.com/flutter/flutter/issues/25626 :) 要解决此问题,请将uiMode放在AndroidManifest中的android:configChanges列表中。
<activity android:name=".MainActivity"
android:launchMode="singleTop"
android:theme="@android:style/Theme.Black.NoTitleBar"
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|uiMode"
android:hardwareAccelerated="true"
android:windowSoftInputMode="adjustResize">
这是因为uiMode值阻止应用程序由于夜间模式(或也放置在扩展坞中)而重新启动。