在Android 8上,SDK在后台无法使用 [英] HERE SDK is unusable in background on Android 8

查看:57
本文介绍了在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在后台无法使用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆