使用百度地图时,可能会碰到has leaked ServiceConnection com.baidu.location.b@4aa5a810 that was originally bound here这类错误,原因可能是没有配置Map定位权限和远程链接机制,或者是初始化LocationClient出现错误,错误情况如下:
Activity cn.demo.MainActivity has leaked ServiceConnection com.baidu.location.b@4aa5a810 that was originally bound here
android.app.ServiceConnectionLeaked: Activity cn.demo.MainActivity has leaked ServiceConnection com.baidu.location.b@4aa5a810 that was originally bound here
at android.app.LoadedApk$ServiceDispatcher.<init>(LoadedApk.java:979)
at android.app.LoadedApk.getServiceDispatcher(LoadedApk.java:873)
解决方法:
在注册清单(AndroidManifest.xml)文件,配置Map定位权限和远程链接机制,修改locationClient的 初始化,上下文不能写当前activity,要写getApplicationContext,如下:
- 1、添加定位权限
<uses-permission android:name="android.permission.BAIDU_LOCATION_SERVICE" />
- 2、添加service标签(在
<application></application>
之间添加)
<service
android:name="com.baidu.location.f"
android:enabled="true"
android:process=":remote" >
</service>
- 3、locationClient 初始化的时候上下文不能写当前activity,要写getApplicationContext
//获取百度定位客户端
locationClient = new LocationClient(getApplicationContext());
完成配置后,重新安装启动,问题解决。