aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--main/src/cgeo/geocaching/activity/AbstractActivity.java2
-rw-r--r--main/src/cgeo/geocaching/activity/AbstractListActivity.java2
-rw-r--r--main/src/cgeo/geocaching/cgBase.java31
-rw-r--r--main/src/cgeo/geocaching/maps/CGeoMap.java2
-rw-r--r--tests/src/cgeo/geocaching/cgeoApplicationTest.java2
5 files changed, 26 insertions, 13 deletions
diff --git a/main/src/cgeo/geocaching/activity/AbstractActivity.java b/main/src/cgeo/geocaching/activity/AbstractActivity.java
index 14dbfd7..5792fbe 100644
--- a/main/src/cgeo/geocaching/activity/AbstractActivity.java
+++ b/main/src/cgeo/geocaching/activity/AbstractActivity.java
@@ -75,7 +75,7 @@ public abstract class AbstractActivity extends Activity implements IAbstractActi
res = this.getResources();
app = (cgeoapplication) this.getApplication();
prefs = getSharedPreferences(Settings.preferences, Context.MODE_PRIVATE);
- base = new cgBase(app);
+ base = cgBase.getInstance(app);
// Restore cookie store if needed
cgBase.restoreCookieStore(Settings.getCookieStore());
diff --git a/main/src/cgeo/geocaching/activity/AbstractListActivity.java b/main/src/cgeo/geocaching/activity/AbstractListActivity.java
index b947c2e..e400cdd 100644
--- a/main/src/cgeo/geocaching/activity/AbstractListActivity.java
+++ b/main/src/cgeo/geocaching/activity/AbstractListActivity.java
@@ -72,7 +72,7 @@ public abstract class AbstractListActivity extends ListActivity implements
res = this.getResources();
app = (cgeoapplication) this.getApplication();
prefs = getSharedPreferences(Settings.preferences, Context.MODE_PRIVATE);
- base = new cgBase(app);
+ base = cgBase.getInstance(app);
}
final public void setTitle(final String title) {
diff --git a/main/src/cgeo/geocaching/cgBase.java b/main/src/cgeo/geocaching/cgBase.java
index c5954b6..f069961 100644
--- a/main/src/cgeo/geocaching/cgBase.java
+++ b/main/src/cgeo/geocaching/cgBase.java
@@ -131,7 +131,6 @@ public class cgBase {
public final static SimpleDateFormat dateTbIn1 = new SimpleDateFormat("EEEEE, dd MMMMM yyyy", Locale.ENGLISH); // Saturday, 28 March 2009
public final static SimpleDateFormat dateTbIn2 = new SimpleDateFormat("EEEEE, MMMMM dd, yyyy", Locale.ENGLISH); // Saturday, March 28, 2009
public final static SimpleDateFormat dateSqlIn = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); // 2010-07-25 14:44:01
- private Resources res = null;
private static final Pattern patternLoggedIn = Pattern.compile("<span class=\"Success\">You are logged in as[^<]*<strong[^>]*>([^<]+)</strong>[^<]*</span>", Pattern.CASE_INSENSITIVE | Pattern.MULTILINE);
private static final Pattern patternLogged2In = Pattern.compile("<strong>\\W*Hello,[^<]*<a[^>]+>([^<]+)</a>[^<]*</strong>", Pattern.CASE_INSENSITIVE | Pattern.MULTILINE);
private static final Pattern patternViewstateFieldCount = Pattern.compile("id=\"__VIEWSTATEFIELDCOUNT\"[^(value)]+value=\"(\\d+)\"[^>]+>", Pattern.CASE_INSENSITIVE | Pattern.MULTILINE);
@@ -143,7 +142,6 @@ public class cgBase {
public static final double deg2rad = Math.PI / 180;
public static final double rad2deg = 180 / Math.PI;
public static final float erad = 6371.0f;
- private cgeoapplication app = null;
public String version = null;
/**
@@ -151,7 +149,11 @@ public class cgBase {
* settings)
*/
private static String idBrowser = "Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.375.86 Safari/533.4";
- Context context = null;
+
+ final private cgeoapplication app;
+ final Context context;
+ final private Resources res;
+
final private static Map<String, Integer> gcIcons = new HashMap<String, Integer>();
public static final int LOG_FOUND_IT = 2;
@@ -226,9 +228,23 @@ public class cgBase {
logTypes0.put("announcement", LOG_ANNOUNCEMENT); // unknown ID; used number doesn't match any GC.com's ID
}
- public cgBase(cgeoapplication appIn) {
- context = appIn.getBaseContext();
- res = appIn.getBaseContext().getResources();
+ private static cgBase instance;
+
+ public static cgBase getInstance(final cgeoapplication app) {
+ if (instance == null) {
+ synchronized (cgBase.class) {
+ if (instance == null) {
+ instance = new cgBase(app);
+ }
+ }
+ }
+ return instance;
+ }
+
+ private cgBase(final cgeoapplication app) {
+ this.app = app;
+ context = app.getBaseContext();
+ res = app.getBaseContext().getResources();
// setup cache type mappings
@@ -297,9 +313,6 @@ public class cgBase {
logTypes2.put(LOG_POST_REVIEWER_NOTE, res.getString(R.string.log_reviewed)); // X
logTypes2.put(LOG_ANNOUNCEMENT, res.getString(R.string.log_announcement)); // X
- // init
- app = appIn;
-
try {
final PackageManager manager = app.getPackageManager();
final PackageInfo info = manager.getPackageInfo(app.getPackageName(), 0);
diff --git a/main/src/cgeo/geocaching/maps/CGeoMap.java b/main/src/cgeo/geocaching/maps/CGeoMap.java
index 285ef6e..13d98a8 100644
--- a/main/src/cgeo/geocaching/maps/CGeoMap.java
+++ b/main/src/cgeo/geocaching/maps/CGeoMap.java
@@ -301,7 +301,7 @@ public class CGeoMap extends AbstractMap implements OnDragListener, ViewFactory
activity = this.getActivity();
app = (cgeoapplication) activity.getApplication();
app.setAction(null);
- base = new cgBase(app);
+ base = cgBase.getInstance(app);
MapFactory mapFactory = Settings.getMapFactory();
// reset status
diff --git a/tests/src/cgeo/geocaching/cgeoApplicationTest.java b/tests/src/cgeo/geocaching/cgeoApplicationTest.java
index 9511217..ad49414 100644
--- a/tests/src/cgeo/geocaching/cgeoApplicationTest.java
+++ b/tests/src/cgeo/geocaching/cgeoApplicationTest.java
@@ -33,7 +33,7 @@ public class cgeoApplicationTest extends ApplicationTestCase<cgeoapplication> {
createApplication();
// create required c:geo objects
- base = new cgBase(this.getApplication());
+ base = cgBase.getInstance(this.getApplication());
}
/**