HERE SDK 在 Android 8 上无法在后台使用

2024-03-10

HERE SDK 尝试启动它的MapService当消费者致电时内部MapEngine.init()。由于 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)

EDIT:我不知道为什么这被标记为重复。我的问题不是像“重复”问题中那样一般如何处理 Android 8 上的后台工作。致电给startService()发生在 HERE SDK 内部,因此消费者无法更改它。该问题针对 HERE 开发人员,以澄清是否有一种方法可以以某种方式初始化 MapEngine,以便 HERE SDK 不会在内部启动服务。


在 HERE Mobile SDK 中,无法从后台线程初始化地图。

通过确保 a) 所需的地图数据已加载到设备上,b) 触发前台服务,完成地图初始化(在前台)后,可以继续在后台导航等功能

来自文档:https://developer.here.com/documentation/android-premium/dev_guide/topics/map-guidance.html https://developer.here.com/documentation/android-premium/dev_guide/topics/map-guidance.html

如果您使用路线规划导航模式 对于驾驶,还可以设置HERE SDK进行引导(包括 语音指令和事件回调)当应用程序处于 背景。然而,与前台导航场景不同的是,HERE SDK 在 Android 上的后台导航期间不会传输地图数据。 为了正确支持这些设备的后台导航,HERE SDK 要求您的应用程序预加载地图数据(例如当前城市或 状态)使用 MapLoader 类。

重要提示:从 Android O (8.0) 开始,如果您的应用运行在 后台,那么定位系统服务只计算一个新的 每小时几次定位您的应用程序。为了避免这种行为, 按照中的说明启动前台服务 安卓文档。重要提示:从 Android P (9.0) 开始,应用程序 需要使用前台服务必须请求 来自用户的 android.permission.FOREGROUND_SERVICE 权限。为了 更多信息,请参阅 Android Pie 行为更改 文档。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

HERE SDK 在 Android 8 上无法在后台使用 的相关文章

随机推荐