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.