diff --git a/mobile/src/com/cradle/iitc_mobile/IITC_FileManager.java b/mobile/src/com/cradle/iitc_mobile/IITC_FileManager.java index 6fceb214..f1707f07 100644 --- a/mobile/src/com/cradle/iitc_mobile/IITC_FileManager.java +++ b/mobile/src/com/cradle/iitc_mobile/IITC_FileManager.java @@ -253,6 +253,8 @@ public class IITC_FileManager { @Override public void onActivityResult(int resultCode, Intent data) { + mIitc.deleteResponseHandler(this); // to enable garbage collection + try { if (resultCode == Activity.RESULT_OK && data != null) { Uri uri = data.getData(); @@ -270,8 +272,8 @@ public class IITC_FileManager { { encoder.write(c); } + encoder.close(); - mStreamOut.write("');".getBytes()); } diff --git a/mobile/src/com/cradle/iitc_mobile/IITC_Mobile.java b/mobile/src/com/cradle/iitc_mobile/IITC_Mobile.java index a64a0087..218efb73 100644 --- a/mobile/src/com/cradle/iitc_mobile/IITC_Mobile.java +++ b/mobile/src/com/cradle/iitc_mobile/IITC_Mobile.java @@ -582,6 +582,14 @@ public class IITC_Mobile extends Activity implements OnSharedPreferenceChangeLis startActivityForResult(launch, RESULT_FIRST_USER + index); } + public void deleteResponseHandler(ResponseHandler handler) { + int index = mResponseHandlers.indexOf(handler); + if (index != -1) { + // set value to null to enable garbage collection, but don't remove it to keep indexes + mResponseHandlers.set(index, null); + } + } + @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { int index = requestCode - RESULT_FIRST_USER;