Your abuse of global variables (i.e. with the static keyword) is
giving you memory leaks.

On Apr 9, 9:58 am, Gubatron <[email protected]> wrote:
> Here's a static wrapper I implemented to get and set properties real
> easy
>
> package gubatron.android.util;
>
> import java.util.Arrays;
>
> import android.content.Context;
> import android.content.SharedPreferences;
> import android.content.SharedPreferences.Editor;
>
> /**
>  * Convenience class to get or set preference values without dealing
> with Android's SharedPreferenes and the editor.
>  * Licensed under LGPL.
>  *
>  * @author gubatron
>  *
>  * Examples:
>  *
>  * PrefUtils.setString(key, value)
>  *
>  * String value = PrefUtils.getString(key);
>  * PrefUtils.getString(key, defaultValue);
>  *
>  *
>  */
> public final class PrefUtils {
>
>         private static SharedPreferences PREFERENCES;
>         private static Editor EDITOR;
>
>         static {
>                 PREFERENCES =
> GlobalVariables.APP_CONTEXT.getSharedPreferences(GlobalConstants.PREFS_FILE 
> _NAME,
> Context.MODE_PRIVATE);
>                 EDITOR = PREFERENCES.edit();
>         }
>
>         public static String getString(String prefKeyName) {
>                 return getString(prefKeyName, null);
>         }
>
>         public static String getString(String prefKeyName, String
> defaultValue) {
>                 String result  = PREFERENCES.getString(prefKeyName, 
> defaultValue);
>                 if (result == null)
>                         return null;
>                 return result;
>         }
>
>         public static byte[] getByteArray(String prefKeyName) {
>                 return getByteArray(prefKeyName, null);
>         }
>
>         public static void setString(String prefKeyName, String value) {
>                 EDITOR.putString(prefKeyName,value);
>                 EDITOR.commit();
>         }
>
>         public static byte[] getByteArray(String prefKeyName, String
> defaultValue) {
>                 String result = getString(prefKeyName, defaultValue);
>                 if (result == null)
>                         return null;
>                 return result.getBytes();
>         }
>
>         public static void setByteArray(String prefKeyName, byte[] value) {
>                 EDITOR.putString(prefKeyName,new String(value));
>                 EDITOR.commit();
>         }
>
>         public static boolean getBoolean(String prefKeyName, boolean
> defaultValue) {
>                 return PREFERENCES.getBoolean(prefKeyName, defaultValue);
>         }
>
>         public static void setBoolean(String prefKeyName, boolean value) {
>                 EDITOR.putBoolean(prefKeyName,value);
>                 EDITOR.commit();
>         }
>
>         public static int getInt(String prefKeyName, int defaultValue) {
>                 return PREFERENCES.getInt(prefKeyName, defaultValue);
>         }
>
>         public static void setInt(String prefKeyName, int value) {
>                 EDITOR.putInt(prefKeyName,value);
>                 EDITOR.commit();
>         }
>
>         public static void clearSettings() {
>                 EDITOR.clear();
>                 EDITOR.commit();
>         }
>
>         public static void testPrefUtils() {
>                 clearSettings();
>                 assert(getString(GlobalConstants.PREF_KEY_UUID)==null);
>
>                 byte[] macAddress =
> WifiUtils.getWiFiMACAddress(GlobalVariables.APP_CONTEXT);
>                 PrefUtils.setByteArray(GlobalConstants.PREF_KEY_UUID, 
> macAddress);
>                 int macAddressChecksum =
> ByteUtils.tripleByteArrayToSmallInt(ByteUtils.getByteArrayChecksum(macAddre 
> ss));
>
>                 byte[] fetchedMacAddress =
> PrefUtils.getByteArray(GlobalConstants.PREF_KEY_UUID);
>                 int fetchedAddressChecksum =
> ByteUtils.tripleByteArrayToSmallInt(ByteUtils.getByteArrayChecksum(fetchedM 
> acAddress));
>                 Arrays.equals(macAddress, fetchedMacAddress);
>
>                 assert(macAddressChecksum == fetchedAddressChecksum);
>
>                 PrefUtils.setInt("test.int.key", Integer.MAX_VALUE);
>                 assert(Integer.MAX_VALUE == 
> PrefUtils.getInt("test.int.key",0));
>
>                 PrefUtils.setInt("test.int.key", Integer.MIN_VALUE);
>                 assert(Integer.MIN_VALUE == 
> PrefUtils.getInt("test.int.key",0));
>
>         }
>
> }
>
> On Apr 9, 5:47 am, Kim Ras <[email protected]> wrote:
>
>
>
> > Excellent, I looked at that and was not sure if that fas able to share
> > the settings between Servises and Activities.. I will look again
> > Thanks
> > Kim

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

To unsubscribe, reply using "remove me" as the subject.

Reply via email to