Blackberry - configuración de la aplicación guardar / cargar

Conozco dos formas de guardar / cargar la configuración de la aplicación:

utilizarTienda persistenteusar el sistema de archivos (almacenar, ya que la tarjeta SD es opcional)

Me gustaría saber cuáles son sus prácticas de trabajar con la configuración de aplicaciones.

Uso de PersistentStore para guardar / cargar la configuración de la aplicación

El almacén persistente proporciona un medio para que los objetos persistan en los restablecimientos de dispositivos. Un objeto persistente consiste en un par clave-valor. Cuando un objeto persistente se confirma en el almacén persistente, el valor de ese objeto se almacena en la memoria flash a través de una copia profunda. El valor se puede recuperar en un momento posterior a través de la clave.

Ejemplo de clase auxiliar para almacenar y recuperar configuraciones:

class PSOptions {
    private PersistentObject mStore;
    private LongHashtableCollection mSettings;
    private long KEY_URL = 0;
    private long KEY_ENCRYPT = 1;
    private long KEY_REFRESH_PERIOD = 2;

    public PSOptions() {
        // "AppSettings" = 0x71f1f00b95850cfeL
        mStore = PersistentStore.getPersistentObject(0x71f1f00b95850cfeL);
    }

    public String getUrl() {
        Object result = get(KEY_URL);
        return (null != result) ? (String) result : null;
    }

    public void setUrl(String url) {
        set(KEY_URL, url);
    }

    public boolean getEncrypt() {
        Object result = get(KEY_ENCRYPT);
        return (null != result) ? ((Boolean) result).booleanValue() : false;
    }

    public void setEncrypt(boolean encrypt) {
        set(KEY_ENCRYPT, new Boolean(encrypt));
    }

    public int getRefreshPeriod() {
        Object result = get(KEY_REFRESH_PERIOD);
        return (null != result) ? ((Integer) result).intValue() : -1;
    }

    public void setRefreshRate(int refreshRate) {
        set(KEY_REFRESH_PERIOD, new Integer(refreshRate));
    }

    private void set(long key, Object value) {
        synchronized (mStore) {
            mSettings = (LongHashtableCollection) mStore.getContents();
            if (null == mSettings) {
                mSettings = new LongHashtableCollection();
            }
            mSettings.put(key, value);
            mStore.setContents(mSettings);
            mStore.commit();
        }
    }

    private Object get(long key) {
        synchronized (mStore) {
            mSettings = (LongHashtableCollection) mStore.getContents();
            if (null != mSettings && mSettings.size() != 0) {
                return mSettings.get(key);
            } else {
                return null;
            }
        }
    }
}

pantalla de aplicación de muestra http://img182.imageshack.us/img182/6348/appsettings.png

Ejemplo de uso:

class Scr extends MainScreen implements FieldChangeListener {
    PSOptions mOptions = new PSOptions();

    BasicEditField mUrl = new BasicEditField("Url:",
            "http://stackoverflow.com/");
    CheckboxField mEncrypt = new CheckboxField("Enable encrypt", false);
    GaugeField mRefresh = new GaugeField("Refresh period", 1, 60 * 10, 10,
            GaugeField.EDITABLE|FOCUSABLE);
    ButtonField mLoad = new ButtonField("Load settings",
            ButtonField.CONSUME_CLICK);
    ButtonField mSave = new ButtonField("Save settings",
            ButtonField.CONSUME_CLICK);

    public Scr() {
        add(mUrl);
        mUrl.setChangeListener(this);
        add(mEncrypt);
        mEncrypt.setChangeListener(this);
        add(mRefresh);
        mRefresh.setChangeListener(this);
        HorizontalFieldManager hfm = new HorizontalFieldManager(USE_ALL_WIDTH);
        add(hfm);
        hfm.add(mLoad);
        mLoad.setChangeListener(this);
        hfm.add(mSave);
        mSave.setChangeListener(this);
        loadSettings();
    }

    public void fieldChanged(Field field, int context) {
        if (field == mLoad) {
            loadSettings();
        } else if (field == mSave) {
            saveSettings();
        }
    }

    private void saveSettings() {
        mOptions.setUrl(mUrl.getText());
        mOptions.setEncrypt(mEncrypt.getChecked());
        mOptions.setRefreshRate(mRefresh.getValue());
    }

    private void loadSettings() {
        mUrl.setText(mOptions.getUrl());
        mEncrypt.setChecked(mOptions.getEncrypt());
        mRefresh.setValue(mOptions.getRefreshPeriod());
    }
}

Respuestas a la pregunta(2)

Su respuesta a la pregunta