diff options
author | Sven Gothel <[email protected]> | 2012-03-17 21:15:49 +0100 |
---|---|---|
committer | Sven Gothel <[email protected]> | 2012-03-17 21:15:49 +0100 |
commit | 235f8b1cbff8ed13071d5c19c0be492c0b25cb78 (patch) | |
tree | 659845e16bd69372bc7ddc3a42b3aa7130d18df5 /src/java/jogamp/common/os/android | |
parent | 0cfc7847c58b51c9a26b50d905b592d1fc4c8578 (diff) |
Add 'asset' URLConnection; IOUtil uses URLConnection / incr. effeciency; Android ClassLoaderUtil cleanup;
- Add 'asset' URLConnection
- Please read API doc 'PiggybackURLConnection' and 'AssetURLConnection'
- Solves generic resource handling where platform locations may differ,
ie ClassLoader lookup on Android in the 'assets/' subfolder.
- New Android 'AssetDexClassLoader' uses 'assets/' folder for findResource(..)
- aapt.signed (our APK ant task)
- uses 'assets/' folder
- adds the 'assetsdir' attribute allowing to copy other assets into the APK
- IOUtil uses URLConnection / incr. effeciency
- using URLConnection on all getResource(..) since URL
is connected anyways for validation and URLConnection can be used by caller right away
- String getRelativeOf(URL, String) -> URL getRelativeOf(URL, String)
- preserves scheme, authority, etc
- simple parentOf handling, more efficient
- reusing new 'asset' protocol impl.
- Android ClassLoaderUtil cleanup;
- Use createClassLoader(..) impl for build-in static jogamp and user APKs,
which removes code redundancy
Tests: New code path, especially 'assets' are covered by new unit tests, no regressions on Linux.
Diffstat (limited to 'src/java/jogamp/common/os/android')
-rw-r--r-- | src/java/jogamp/common/os/android/GluegenVersionActivity.java | 5 | ||||
-rw-r--r-- | src/java/jogamp/common/os/android/StaticContext.java | 14 |
2 files changed, 14 insertions, 5 deletions
diff --git a/src/java/jogamp/common/os/android/GluegenVersionActivity.java b/src/java/jogamp/common/os/android/GluegenVersionActivity.java index 8ea10e2..5923e66 100644 --- a/src/java/jogamp/common/os/android/GluegenVersionActivity.java +++ b/src/java/jogamp/common/os/android/GluegenVersionActivity.java @@ -27,6 +27,7 @@ */ package jogamp.common.os.android; + import com.jogamp.common.GlueGenVersion; import com.jogamp.common.os.Platform; import com.jogamp.common.util.VersionUtil; @@ -43,7 +44,7 @@ public class GluegenVersionActivity extends Activity { public void onCreate(Bundle savedInstanceState) { Log.d(MD.TAG, "onCreate - S"); super.onCreate(savedInstanceState); - StaticContext.setContext(this.getApplicationContext()); + StaticContext.init(this.getApplicationContext()); tv = new TextView(this); tv.setText(VersionUtil.getPlatformInfo()+Platform.NEWLINE+GlueGenVersion.getInstance()+Platform.NEWLINE+Platform.NEWLINE); setContentView(tv); @@ -109,7 +110,7 @@ public class GluegenVersionActivity extends Activity { tv.append("> destroyed"+Platform.NEWLINE); } Log.d(MD.TAG, "onDestroy - x"); - StaticContext.setContext(null); + StaticContext.clear(); super.onDestroy(); Log.d(MD.TAG, "onDestroy - X"); } diff --git a/src/java/jogamp/common/os/android/StaticContext.java b/src/java/jogamp/common/os/android/StaticContext.java index 56f8f13..cb55e65 100644 --- a/src/java/jogamp/common/os/android/StaticContext.java +++ b/src/java/jogamp/common/os/android/StaticContext.java @@ -32,13 +32,21 @@ import android.util.Log; public class StaticContext { private static Context context = null; + private static boolean DEBUG = false; - public static final synchronized void setContext(Context ctx) { - if(DEBUG) Log.d(MD.TAG, "setContext("+ctx+")"); + public static final synchronized void init(Context ctx) { + if(null != context) { + throw new RuntimeException("Context already set"); + } + if(DEBUG) { Log.d(MD.TAG, "init("+ctx+")"); } context = ctx; } + public static final synchronized void clear() { + if(DEBUG) { Log.d(MD.TAG, "clear()"); } + context = null; + } public static final synchronized Context getContext() { return context; - } + } } |