微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

当应用程序进入后台时,Android 11API级别30onTaskRemoved在前景服务中触发

如何解决当应用程序进入后台时,Android 11API级别30onTaskRemoved在前景服务中触发

我尝试测试可在android 11上使用的应用(在Pixel 3 XL上获得了它)。当应用程序进入后台时,我收到奇怪的行为: onTaskRemoved在Foreground服务上触发,看起来像应用程序被杀死并重新启动。

有关前台服务的信息: 在清单中:

<service
    android:name=".MyFS"
    android:foregroundServiceType="mediaProjection"
    android:enabled="true"
    android:exported="false"/>

在FS类的onStartCommand中->返回START_STICKY;

其他信息:使用“相机”和“麦克风”的应用程序,我试图将这两个添加到android:foregroundServiceType =“ mediaProjection | camera | microphone”,但这没有帮助。

有趣的是,如果我回到应用程序并第二次单击onhomeRemoved而不调用onTaskRemoved,则它会在该应用程序第一次进入后台时触发。

请帮助我了解它的来历。谢谢

PS: 有关系吗? 在onTaskRemoved之前,我可以在完整的日志中看到以下内容

2020-10-05 09:33:19.866 1463-1524/? D/EventSequenceValidator: onIntentFailed during UNKNowN.
    java.lang.Throwable: EventSequenceValidator#getStackTrace
        at com.google.android.startop.iorap.EventSequenceValidator.logWarningWithStackTrace(EventSequenceValidator.java:260)
        at com.google.android.startop.iorap.EventSequenceValidator.onIntentFailed(EventSequenceValidator.java:130)
        at com.android.server.wm.LaunchObserverRegistryImpl.handleOnIntentFailed(LaunchObserverRegistryImpl.java:147)
        at com.android.server.wm.LaunchObserverRegistryImpl.lambda$KukKmVpn5W_1xSV6Dnp8wW2H2Ks(UnkNown Source:0)
        at com.android.server.wm.-$$Lambda$LaunchObserverRegistryImpl$KukKmVpn5W_1xSV6Dnp8wW2H2Ks.accept(UnkNown Source:2)
        at com.android.internal.util.function.pooled.PooledLambdaimpl.doInvoke(PooledLambdaimpl.java:264)
        at com.android.internal.util.function.pooled.PooledLambdaimpl.invoke(PooledLambdaimpl.java:201)
        at com.android.internal.util.function.pooled.OmniFunction.run(OmniFunction.java:97)
        at android.os.Handler.handleCallback(Handler.java:938)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:223)
        at android.os.HandlerThread.run(HandlerThread.java:67)
        at com.android.server.ServiceThread.run(ServiceThread.java:44)
2020-10-05 09:33:19.866 1463-1524/? D/EventSequenceValidator: dec AccIntentStartedEvents to 2
2020-10-05 09:33:19.870 27662-27662/: t:main onTaskRemoved here.

解决方法

对我来说,将活动启动模式从singleInstance更改为已解决的问题,并且不再调用onTaskRemoved。 我在清单中用singleInstance声明了2个活动。将它们更改为singleTop后,问题就消失了。

更改

        android:launchMode="singleInstance"

        android:launchMode="singleTop"

或将其完全删除

显然,拥有singleInstance是有充分理由的,这仍然是意外的行为,但是现在这是一个有效的解决方法。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。