Android使用高德Service中定位出现has leaked ServiceConnection com.loc.d解决方案

596 阅读1分钟
Service {{自己应用包名}}.OutDoorSportForAMapService has leaked ServiceConnection com.loc.d$2@3871f3e that was originally bound here
android.app.ServiceConnectionLeaked: Service {{自己应用包名}}.OutDoorSportForAMapService has leaked ServiceConnection com.loc.d$2@3871f3e that was originally bound here
at android.app.LoadedApk$ServiceDispatcher.<init>(LoadedApk.java:2077)
at android.app.LoadedApk.getServiceDispatcherCommon(LoadedApk.java:1949)
at android.app.LoadedApk.getServiceDispatcher(LoadedApk.java:1928)
at android.app.ContextImpl.bindServiceCommon(ContextImpl.java:2031)
at android.app.ContextImpl.bindService(ContextImpl.java:1961)
at android.content.ContextWrapper.bindService(ContextWrapper.java:863)
at com.loc.d.a(Unknown Source:5)
at com.loc.d.p(Unknown Source:17)
at com.loc.d.d(Unknown Source:0)
at com.loc.d$b.onLooperPrepared(Unknown Source:18)
at android.os.HandlerThread.run(HandlerThread.java:66)
at com.loc.d$b.run(Unknown Source:0)

解决方案 在自己Service结束的时候调用mLocationClient!!.onDestroy()

PS:刚开始以为是自己Service绑定没结束,其实很简单是因为高德定位只是调用stopLocation()结束定位,这样是不够的,需要调用onDestroy()释放资源。