From 235f8b1cbff8ed13071d5c19c0be492c0b25cb78 Mon Sep 17 00:00:00 2001 From: Sven Gothel Date: Sat, 17 Mar 2012 21:15:49 +0100 Subject: 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. --- src/java/jogamp/android/launcher/ActivityLauncher.java | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) (limited to 'src/java/jogamp/android/launcher/ActivityLauncher.java') diff --git a/src/java/jogamp/android/launcher/ActivityLauncher.java b/src/java/jogamp/android/launcher/ActivityLauncher.java index 04c898e..7e2d86d 100644 --- a/src/java/jogamp/android/launcher/ActivityLauncher.java +++ b/src/java/jogamp/android/launcher/ActivityLauncher.java @@ -32,7 +32,6 @@ import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import android.app.Activity; -import android.content.Context; import android.net.Uri; import android.os.Bundle; import android.widget.TextView; @@ -42,7 +41,7 @@ public class ActivityLauncher extends Activity { static final String TAG = "NEWTLauncherActivity"; TextView tv = null; Method mOnCreate, mOnDestroy, mOnPause, mOnRestart, mOnResume, - mOnStart, mOnStop, mSetIsInvokedByExternalActivity; + mOnStart, mOnStop, mSetRootActivity; Class activityClazz = null; Object activityObject = null; @@ -55,7 +54,7 @@ public class ActivityLauncher extends Activity { final LauncherUtil.DataSet data = LauncherUtil.DataSet.create(uri); data.setSystemProperties(); - ClassLoader cl = ClassLoaderUtil.createJogampClassLoaderSingleton(this, data.getPackages()); + ClassLoader cl = ClassLoaderUtil.createClassLoader(this, data.getPackages(), false); if(null != cl) { try { activityClazz = Class.forName(data.getActivityName(), true, cl); @@ -69,7 +68,7 @@ public class ActivityLauncher extends Activity { mOnResume = activityClazz.getMethod("onResume"); mOnStart = activityClazz.getMethod("onStart"); mOnStop = activityClazz.getMethod("onStop"); - mSetIsInvokedByExternalActivity = activityClazz.getMethod("setIsInvokedByExternalActivity", Activity.class); + mSetRootActivity = activityClazz.getMethod("setRootActivity", Activity.class); } catch (Exception e) { Log.d(TAG, "error: "+e, e); throw new RuntimeException(e); @@ -78,13 +77,13 @@ public class ActivityLauncher extends Activity { if( null == mOnCreate || null == mOnDestroy || null == mOnPause || null == mOnRestart || null == mOnResume || - null == mSetIsInvokedByExternalActivity ) { + null == mSetRootActivity ) { RuntimeException e = new RuntimeException("XXX - incomplete method set"); Log.d(TAG, "error: "+e, e); throw e; } - callMethod(activityObject, mSetIsInvokedByExternalActivity, this); + callMethod(activityObject, mSetRootActivity, this); callMethod(activityObject, mOnCreate, savedInstanceState); Log.d(TAG, "onCreate - X"); -- cgit v1.2.3