Activity opens after delay
本问题已经有最佳答案,请猛点这里访问。
场景 - ActivityA 可见。在按下 Android 设备的 Home 按钮时,ActivityA/App 进入后台并在 onUserLeaveHint() 中,触发打开 ActivityB 的意图。该应用程序会立即最小化,但 ActivityB 会在延迟 5-6 秒后打开。经过一些调试后,intent 会立即触发,但 ActivityB 的 onCreate() 会在 5-6 秒后调用。
PS - ActivityB 具有启动模式 - 单实例。
知道为什么会这样吗?
打开activity的代码如下-
1 2 3 4 5 6 | override fun onUserLeaveHint() { super.onUserLeaveHint() val intent = Intent(this, ActivityB::class.java) startActivity(intent) } |
ActivityB 在 manifest 文件中定义如下 -
1 2 3 4 5 6 7 8 9 10 11 | <activity android:name=".activity.ActivityB" android:allowTaskReparenting="true" android:autoRemoveFromRecents="true" android:configChanges="screenSize|smallestScreenSize|screenLayout|orientation" android:excludeFromRecents="true" android:screenOrientation="portrait" android:noHistory="true" android:launchMode="singleInstance" android:taskAffinity="" android:supportsPictureInPicture="true" android:theme="@style/PipTheme"/> |
PipTheme -
1 2 3 4 5 6 7 8 9 | <style name="PipTheme" parent="Theme.AppCompat.Light.NoActionBar"> <item name="android:windowIsTranslucent">true</item> <item name="android:windowBackground">@android:color/transparent</item> <item name="android:windowContentOverlay">@null</item> <item name="android:windowNoTitle">true</item> <item name="android:windowIsFloating">false</item> <item name="android:windowActionBar">false</item> <item name="android:windowFullscreen">true</item> <item name="android:backgroundDimEnabled">false</item> |
https://issuetracker.google.com/issues/36910222
与其说是一个问题,不如说是一个框架功能,它阻止了应用程序在按下主页按钮时强制自己打开。
有几个解决方法:
使用pendingIntent-
val intent = Intent(context, ActivityB::class.java)
val pendingIntent = PendingIntent.getActivity(context, 0, intent, 0)
未决意图.send()
使用报警管理器打开activtiy