You shouldn't optimize blindly things without a clear need for
optimization. Even if you correctly understood the optimization, for
something done infrequently, you're more likely to introduce bugs than
improve performance to any detectable degree.

On Apr 10, 9:35 am, Gubatron <[email protected]> wrote:
> I'll make it get the SharedPreferences then with a method everytime
> then, I had it like that before but
> I had the impression after reading the "Designing for Performance"
> document on the dev guide
> that it was better to use static references than calling virtual
> methods (on android).
>
> On Apr 10, 1:26 am, Zsolt Vasvari <[email protected]> wrote:
>
>
>
> > I wouldn't try to "optimize" my code by storing stuff in static
> > variables unless you have proof that it's causing a performace issue.
>
> > I have a PrefUtil class very similar to yours, but it just retrieves
> > the SharedPreferences object every time.
>
> > On Apr 10, 5:56 am, Bob Kerns <[email protected]> wrote:
>
> > > 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- Hide quoted text -
>
> > > - Show quoted text -

-- 
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