活动在延迟后打开

时间:2018-11-29 13:30:53

标签: android android-studio android-intent android-activity

场景-ActivityA可见。按下Android设备的“主页”按钮后,ActivityA / App进入后台,而在onUserLeaveHint()中,激发打开ActivityB的意图。该应用会立即最小化,但ActivityB在延迟5-6秒后会打开。经过一些调试后,会立即触发意图,但是5到6秒后会调用ActivityB的onCreate()。 PS-ActivityB具有启动模式-单个实例。

知道为什么会这样吗?

打开活动的代码如下-

    override fun onUserLeaveHint() {
    super.onUserLeaveHint()

    val intent = Intent(this, ActivityB::class.java)
    startActivity(intent)
}

清单文件中的ActivityB定义如下-

<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-

<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>

1 个答案:

答案 0 :(得分:1)

https://issuetracker.google.com/issues/36910222 除了问题以外,它很可能是一种框架功能,可以阻止应用在按下主屏幕按钮时强制自己打开。

有几种解决方法:

  1. 使用pendingIntent-

    val intent = Intent(上下文,ActivityB :: class.java) valendingIntent = PendingIntent.getActivity(context,0,intent,0) endingIntent.send()

  2. 使用警报管理器打开活动