現在、MapsForge を使用して、アプリケーションのアクティビティにマップを表示しようとしています。GraphHopper が提供するルートを使用して、マップを表示し、ポリラインをマップに追加できます。
MapsForge の「はじめに」セクションでアドバイスを受けたので、次のコードを設定しました。アクティビティは、ボタンまたはハードウェアの「戻る」ボタンで閉じることができます。
ボタンのリスナーのコード:
buttonRetour.setOnClickListener(new Button.OnClickListener() {
public void onClick(View v) {
finish();
}
});
私の方法のコード:
@Override
protected void onStop() {
mapView.getLayerManager().getLayers().remove(tileRendererLayer);
tileRendererLayer.onDestroy();
super.onStop();
}
@Override
protected void onDestroy() {
tileCache.destroy();
super.onDestroy();
}
そして変数;
public class RunActivity extends Activity {
private MapView mapView;
private TileCache tileCache;
private TileRendererLayer tileRendererLayer;
しかし、buttonRetour でアクティビティを閉じると、次のエラーが発生します。
06-08 10:30:25.051: E/AndroidRuntime(8895): FATAL EXCEPTION: main
06-08 10:30:25.051: E/AndroidRuntime(8895): java.lang.RuntimeException: Unable to stop activity {icam.Travelr.Core/icam.Travelr.Core.RunActivity}: java.lang.NullPointerException
06-08 10:30:25.051: E/AndroidRuntime(8895): at android.app.ActivityThread.performDestroyActivity(ActivityThread.java:3072)
06-08 10:30:25.051: E/AndroidRuntime(8895): at android.app.ActivityThread.handleDestroyActivity(ActivityThread.java:3126)
06-08 10:30:25.051: E/AndroidRuntime(8895): at android.app.ActivityThread.access$1200(ActivityThread.java:122)
06-08 10:30:25.051: E/AndroidRuntime(8895): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1179)
06-08 10:30:25.051: E/AndroidRuntime(8895): at android.os.Handler.dispatchMessage(Handler.java:99)
06-08 10:30:25.051: E/AndroidRuntime(8895): at android.os.Looper.loop(Looper.java:137)
06-08 10:30:25.051: E/AndroidRuntime(8895): at android.app.ActivityThread.main(ActivityThread.java:4340)
06-08 10:30:25.051: E/AndroidRuntime(8895): at java.lang.reflect.Method.invokeNative(Native Method)
06-08 10:30:25.051: E/AndroidRuntime(8895): at java.lang.reflect.Method.invoke(Method.java:511)
06-08 10:30:25.051: E/AndroidRuntime(8895): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
06-08 10:30:25.051: E/AndroidRuntime(8895): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
06-08 10:30:25.051: E/AndroidRuntime(8895): at dalvik.system.NativeStart.main(Native Method)
06-08 10:30:25.051: E/AndroidRuntime(8895): Caused by: java.lang.NullPointerException
06-08 10:30:25.051: E/AndroidRuntime(8895): at icam.Travelr.Core.RunActivity.onStop(RunActivity.java:372)
06-08 10:30:25.051: E/AndroidRuntime(8895): at android.app.Instrumentation.callActivityOnStop(Instrumentation.java:1174)
06-08 10:30:25.051: E/AndroidRuntime(8895): at android.app.Activity.performStop(Activity.java:4603)
06-08 10:30:25.051: E/AndroidRuntime(8895): at android.app.ActivityThread.performDestroyActivity(ActivityThread.java:3067)
06-08 10:30:25.051: E/AndroidRuntime(8895): ... 11 more
入れてみました
mapView.getLayerManager().getLayers().remove(tileRendererLayer);
tileRendererLayer.onDestroy();
tileCache.destroy();
通話の直前にfinish()
機能しましたが、明らかに使用できません。ハードウェアの戻るボタンを使用してアクティビティを閉じると、OutOfMemory
遅かれ早かれエラーが発生します (私は試しました)。また、すべての呼び出しを onStop() 関数に入れようとしましたsuper()
。. 何も機能しませんでした。呼び出し自体は機能しません。他の呼び出しがコメントされていると、すべての呼び出しでエラーが発生します。
Android 4.0 (14) で MapsForge 0.4.3 を使用しています。
これを引き起こす原因と、これを解決する方法を知っている人はいますか? これは、バージョン 0.3 以降で解決された問題のようです。