persistencia datos blackberry persistent-storage

blackberry - persistencia de datos en java pdf



Eliminar el objeto persistente cuando la aplicaciĆ³n se elimina en Blackberry (1)

Estoy usando un objeto persistente en blackberry para almacenar los detalles de configuración específicos de la aplicación. Así es como estoy implementando la clase

public class Preferences implements Persistable { private static PersistentObject persistentObject = PersistentStore.getPersistentObject(0x2759d6ff72264bdbL); private static Hashtable tbl = new Hashtable(); public static void storeLoginToken(String token) { token = removeCharAt(token,0); token = removeCharAt(token,token.length()-1); tbl.put("token", token); persistentObject.setContents(tbl); persistentObject.commit(); } public static String getLoginToken() { Hashtable tbl = (Hashtable)persistentObject.getContents(); try { String token = tbl.get("token").toString(); System.out.println("Token = "+token); return token; } catch(Exception e) { return null; } } }

Pero si desinstalo / elimino la aplicación, estos valores almacenados no se eliminan. Cuando instalo la aplicación para la próxima vez, la aplicación busca los valores almacenados anteriores.

¿Cómo puedo hacer esto correctamente en blackberry? Gracias


Crea una clase de hashtable personalizada como esta

package com.myapp.items; import net.rim.device.api.util.Persistable; import java.util.*; public class MyAppHashtable extends Hashtable implements Persistable{ }

Y cambia tu código a

public class Preferences { private static PersistentObject persistentObject = PersistentStore.getPersistentObject(0x2759d6ff72264bdbL); private static MyAppHashtable tbl = new MyAppHashtable (); public static void storeLoginToken(String token) { token = removeCharAt(token,0); token = removeCharAt(token,token.length()-1); tbl.put("token", token); persistentObject.setContents(tbl); persistentObject.commit(); } public static String getLoginToken() { MyAppHashtable tbl = (MyAppHashtable )persistentObject.getContents(); try { String token = tbl.get("token").toString(); System.out.println("Token = "+token); return token; } catch(Exception e) { return null; } } }

Esto es para que sigamos la siguiente información de RIM

El modelo de persistencia de BlackBerry

Cuando utiliza el modelo de persistencia de BlackBerry, los datos solo se eliminan si la tienda contiene datos que pertenecen a la aplicación eliminada.

Por ejemplo, si una aplicación almacena un objeto con un paquete llamado com.mycompany.application.storage y ninguna otra aplicación en el teléfono inteligente BlackBerry hace referencia al paquete, el almacenamiento persistente y la aplicación eliminada se eliminan.

Lo mismo es cierto si el objeto está envuelto en un contenedor como un Vector . Incluso si solo uno de los elementos del Vector tiene un nombre de paquete que no es utilizado por otras aplicaciones, todo el Vector se elimina del almacén persistente.

Nota: Si la aplicación no almacena ningún objeto con una estructura de paquete de identificación (por ejemplo, una aplicación que almacena objetos java.util.Vector o javax.microedition.location.AddressInfo ), la aplicación debe crear y usar una clase que se extienda Vector para identificar que Vector pertenece a la aplicación dada. Cuando almacena este Vector , que se identifica de forma única por su paquete, garantiza que los datos se eliminan del almacén permanente cuando se elimina la aplicación.

Esta información es de aquí