本文介绍了在Android 8上,SDK在后台无法使用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
这里SDK尝试在消费者调用MapEngine.init()
时在内部启动其MapService
。由于Android 8后台执行的限制,如果要从后台服务初始化MapEngine
,则会失败。有什么方法可以初始化MapEngine
而不涉及SDK内部启动服务?
异常日志:
> java.lang.IllegalStateException: Not allowed to start service Intent { act=com.here.android.mpa.service.MapService.v3 cmp=de.newecho.app/com.here.android.mpa.service.MapService (has extras) }: app is in background uid UidRecord{6924417 u0a225 CEM idle change:cached procs:1 seq(0,0,0)}
at android.app.ContextImpl.startServiceCommon(ContextImpl.java:1521)
at android.app.ContextImpl.startService(ContextImpl.java:1477)
at android.content.ContextWrapper.startService(ContextWrapper.java:650)
at com.nokia.maps.MapServiceClient.a(SourceFile:77)
at com.nokia.maps.MapsEngine.a(SourceFile:622)
at com.nokia.maps.MapsEngine.a(SourceFile:364)
at com.here.android.mpa.common.MapEngine.init(SourceFile:260)
编辑:
我不知道为什么这个被标记为复制品。我的问题不是关于如何处理Android 8的一般后台工作,就像"复制"的问题一样。对startService()
的调用发生在Here SDK内部,消费者无法更改。该问题针对HERE开发人员,以澄清是否有办法初始化MapEngine,以便HERE SDK不会在内部启动服务。
推荐答案
在此处Mobile SDK中,无法从后台线程初始化地图。
在地图初始化(在前台)完成后,通过确保a)所需的地图数据已加载到设备上,b)触发前台服务
,可以继续执行后台导航等功能来自文档:https://developer.here.com/documentation/android-premium/dev_guide/topics/map-guidance.html
如果您正在使用逐个转弯导航模式 对于驾驶,您也可以在此处设置SDK进行引导(包括 语音指令和事件回调),而应用程序在 背景资料。然而,与前台导航场景不同的是,这里 在Android后台导航时,SDK不会对地图数据进行串流。 要正确支持这些设备的后台导航,请在此处安装SDK 需要您的应用程序预加载地图数据(例如当前城市或 州)使用MapLoader类。 重要提示:从Android O(8.0)开始,如果您的应用程序在 后台,则定位系统服务仅计算新的 每小时为你的应用程序定位几次。为了避免这种行为, 按照中的说明启动前台服务 Android文档。重要提示:从Android P(9.0)、APP开始 需要使用前台服务的必须请求 用户的android.permission.FOREGROUND_SERVICE权限。为 更多信息,请参考Android Pie行为改变 文档。
这篇关于在Android 8上,SDK在后台无法使用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!