From f1570a953116518754cf6db28c7946e0f3426c00 Mon Sep 17 00:00:00 2001 From: Emux Date: Sat, 17 Feb 2018 12:39:11 +0200 Subject: [PATCH] POI search sample: open / close DB at start / exit #32 --- .../oscim/android/test/PoiSearchActivity.java | 25 +++++++++++-------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/vtm-android-example/src/org/oscim/android/test/PoiSearchActivity.java b/vtm-android-example/src/org/oscim/android/test/PoiSearchActivity.java index 652f5dc7..28734658 100644 --- a/vtm-android-example/src/org/oscim/android/test/PoiSearchActivity.java +++ b/vtm-android-example/src/org/oscim/android/test/PoiSearchActivity.java @@ -1,5 +1,5 @@ /* - * Copyright 2017 devemux86 + * Copyright 2017-2018 devemux86 * * This program is free software: you can redistribute it and/or modify it under the * terms of the GNU Lesser General Public License as published by the Free Software @@ -58,11 +58,11 @@ public class PoiSearchActivity extends MapsforgeActivity implements ItemizedLaye private static final Logger log = LoggerFactory.getLogger(PoiSearchActivity.class); - private static String POI_FILE; private static final String POI_CATEGORY = "Restaurants"; private static final int SELECT_POI_FILE = MapsforgeActivity.SELECT_THEME_FILE + 1; private ItemizedLayer mMarkerLayer; + private PoiPersistenceManager mPersistenceManager; public static class PoiFilePicker extends FilePicker { public PoiFilePicker() { @@ -78,6 +78,14 @@ public class PoiSearchActivity extends MapsforgeActivity implements ItemizedLaye mMap.layers().add(new PoiSearchActivity.MapEventsReceiver(mMap)); } + @Override + protected void onDestroy() { + if (mPersistenceManager != null) + mPersistenceManager.close(); + + super.onDestroy(); + } + @Override public boolean onCreateOptionsMenu(Menu menu) { return false; @@ -99,7 +107,8 @@ public class PoiSearchActivity extends MapsforgeActivity implements ItemizedLaye return; } - POI_FILE = intent.getStringExtra(FilePicker.SELECTED_FILE); + String file = intent.getStringExtra(FilePicker.SELECTED_FILE); + mPersistenceManager = AndroidPoiPersistenceManagerFactory.getPoiPersistenceManager(file); Bitmap bitmap = drawableToBitmap(getResources().getDrawable(R.drawable.marker_green)); MarkerSymbol symbol = new MarkerSymbol(bitmap, MarkerSymbol.HotspotPlace.BOTTOM_CENTER); @@ -151,22 +160,16 @@ public class PoiSearchActivity extends MapsforgeActivity implements ItemizedLaye @Override protected Collection doInBackground(BoundingBox... params) { // Search POI - PoiPersistenceManager persistenceManager = null; try { - persistenceManager = AndroidPoiPersistenceManagerFactory.getPoiPersistenceManager(POI_FILE); - PoiCategoryManager categoryManager = persistenceManager.getCategoryManager(); + PoiCategoryManager categoryManager = mPersistenceManager.getCategoryManager(); PoiCategoryFilter categoryFilter = new ExactMatchPoiCategoryFilter(); categoryFilter.addCategory(categoryManager.getPoiCategoryByTitle(category)); org.mapsforge.core.model.BoundingBox bb = new org.mapsforge.core.model.BoundingBox( params[0].getMinLatitude(), params[0].getMinLongitude(), params[0].getMaxLatitude(), params[0].getMaxLongitude()); - return persistenceManager.findInRect(bb, categoryFilter, null, Integer.MAX_VALUE); + return mPersistenceManager.findInRect(bb, categoryFilter, null, Integer.MAX_VALUE); } catch (Throwable t) { log.error(t.getMessage(), t); - } finally { - if (persistenceManager != null) { - persistenceManager.close(); - } } return null; }