2016-05-18 12 views
0

私はAndroidアプリケーションにosmdroid(AndroidライブラリのOpen Street Map)を使用してマップを示すMapActivityを持っています。osmdroidを使用したLeaked IntentReceiver例外

私がこのMapActivityに参加して別のアクティビティに出たとき、私はいつも例外を受け取り、それを避ける方法は理解できません。なぜなら、それはライブラリ内で行われることに関連していると思うからです。 次のログで見ることができるように、私は私が「unregisterReceiver(yourReceiver)」を持っていることがわかっGoogleで検索MapActivity

05-18 17:34:31.117 27073-27073/com.fpricoco.etip I/﹕ Classe 'MapActivity' ---- 'onDestroy()' ---- Stato: Distrutta 
05-18 17:34:31.157 27073-27073/com.fpricoco.etip E/ActivityThread﹕ Activity com.fpricoco.etip.Activities.MapActivity has leaked IntentReceiver org.osmdroid.tileprov[email protected]43d85f60 that was originally registered here. Are you missing a call to unregisterReceiver()? 
    android.app.IntentReceiverLeaked: Activity com.fpricoco.etip.Activities.MapActivity has leaked IntentReceiver org.osmdroid.tileprov[email protected]43d85f60 that was originally registered here. Are you missing a call to unregisterReceiver()? 
      at android.app.LoadedApk$ReceiverDispatcher.<init>(LoadedApk.java:792) 
      at android.app.LoadedApk.getReceiverDispatcher(LoadedApk.java:593) 
      at android.app.ContextImpl.registerReceiverInternal(ContextImpl.java:1151) 
      at android.app.ContextImpl.registerReceiver(ContextImpl.java:1138) 
      at android.app.ContextImpl.registerReceiver(ContextImpl.java:1132) 
      at android.content.ContextWrapper.registerReceiver(ContextWrapper.java:365) 
      at org.osmdroid.tileprovider.util.SimpleRegisterReceiver.registerReceiver(SimpleRegisterReceiver.java:21) 
      at org.osmdroid.tileprovider.modules.MapTileFileStorageProviderBase.<init>(MapTileFileStorageProviderBase.java:34) 
      at org.osmdroid.tileprovider.modules.MapTileFileArchiveProvider.<init>(MapTileFileArchiveProvider.java:57) 
      at org.osmdroid.tileprovider.modules.MapTileFileArchiveProvider.<init>(MapTileFileArchiveProvider.java:76) 
      at org.osmdroid.tileprovider.MapTileProviderBasic.<init>(MapTileProviderBasic.java:63) 
      at org.osmdroid.tileprovider.MapTileProviderBasic.<init>(MapTileProviderBasic.java:41) 
      at org.osmdroid.tileprovider.MapTileProviderBasic.<init>(MapTileProviderBasic.java:34) 
      at org.osmdroid.views.overlay.MinimapOverlay.<init>(MinimapOverlay.java:114) 
      at com.fpricoco.etip.Activities.MapActivity.onCreate(MapActivity.java:303) 
      at android.app.Activity.performCreate(Activity.java:5008) 
      at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079) 
      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2034) 
      at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2095) 
      at android.app.ActivityThread.access$600(ActivityThread.java:137) 
      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1206) 
      at android.os.Handler.dispatchMessage(Handler.java:99) 
      at android.os.Looper.loop(Looper.java:213) 
      at android.app.ActivityThread.main(ActivityThread.java:4791) 
      at java.lang.reflect.Method.invokeNative(Native Method) 
      at java.lang.reflect.Method.invoke(Method.java:511) 
      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789) 
      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:556) 
      at dalvik.system.NativeStart.main(Native Method) 

で破壊した後にそれが起こる、ポイントは私が私の中に持っていないということです私のコードに "yourReceiver"が設定されている場合は、ライブラリ内で実行されると思います。

は、私はまた、このソリューション「https://groups.google.com/forum/#!topic/osmdroid/wDEvFpWfTIU」を見つけましたが、私は最後に、私はまた、このようにしてみました

を切り離す方法を理解していないが、それはうまくいきませんでした:

// .. get custom tiles off the screen 
myMapView.getOverlays().remove(mMinimapOverlay); 
// .. release all custom tiles' bitmaps 
myMapView.getTileProvider().clearTileCache(); 
// .. unregister intent receiver 
myMapView.getTileProvider().detach(); 

ライブラリー私が輸入したのは:

compile 'org.osmdroid:osmdroid-android:[email protected]' 

inside my gradle.build fileです。

+0

は、受信機のパラメータの一例名です。通常、あなたはyourReceiver変数を見つけることができませんでした。 unregisterReceiver()呼び出しで受け入れられるコードを調べてみてください。 –

+0

また、あなたのログを読んで、303行目の近くに問題があることを示唆しています。ここでは、 'com.fpricoco.etip.Activities.MapActivity.onCreate(MapActivity.java:303)'でヒントを得ています。 –

+0

こんにちは、私は "yourReceiver"が例であることを知っていますが、unregisterReceiver()は、引数としてBroadcastReceiver型のオブジェクトを必要としています;ポイントは私のコードでこの型のオブジェクトを持っていません。 303私は持っています: mMinimapOverlay =新しいMinimapOverlay(myContext、myMapView.getTileRequestCompleteHandler()); – Fausto70

答えて

-1

この試してみてください。 "yourReceiver" を

@Override 
public void onDestroy() { 
myMapView.onDetach(); 
myMapView.getTileProvider().clearTileCache(); 
} 
関連する問題