[RESOLVIDO]Persistência

Boa tarde pessoal!

Tenho a seguinte MIDlet simplificada:

public class Ex1 extends MIDlet implements CommandListener
{
    //Todos atributos aqui

    protected void startApp() throws MIDletStateChangeException
    {
         display = Display.getDisplay(this);
         form = new Form("Primeiro Aplicativo JME");

         tf_nome = new TextField("Nome:", "", 30, TextField.ANY);
         
         cm_gravar = new Command("Gravar", Command.ITEM, 1);
         cm_listar = new Command("Listar", Command.ITEM, 2);
               
         form.append(tf_nome);
         form.addCommand(cm_gravar);
         form.addCommand(cm_listar);

         form.setCommandListener(this);

         display.setCurrent(form);
         criarBD();
    }

    private void criarBD()
    {  
        try
        {
            // Se 'banco' já existir abre, senão cria
            bd = RecordStore.openRecordStore("banco", true);
            
            System.out.println("Banco criado ou aberto com sucesso!!!");
            
            
        }
        catch( Exception e )
        {
            e.printStackTrace(); // exibido no console
        }
    }


    public void commandAction(Command c, Displayable d)
    {
        if( c == cm_gravar )
        {
            if( tf_nome.getString().length() > 0 )
            {
                 Cliente cliente = new Cliente();               
                 cliente.setNome(tf_nome.getString());

                 inserir(cliente);
                 
            }
            else
            {
                display.setCurrent(
                        new Alert("Por favor, preencha todos os campos", null,
                        null, AlertType.INFO));
            }
        }
        else 
        {
             Form form = new Form("Listagem");
             Vector vetor = listar();
             for( int i = 0; i < vetor.size(); i++ )
             {
                 Cliente cliente = (Cliente)vetor.elementAt(i);
                 form.append( cliente.getNome() + "\n");
                 
             }
             
             Command com = new Command("Voltar", Command.BACK, 1);
             form.addCommand(com);
             form.setCommandListener(new Ouvinte(com));
             display.setCurrent(form);
        } 
    }

    public void inserir( Cliente cliente )
    {
        try
        {
            
            ByteArrayOutputStream bStream = new ByteArrayOutputStream();
            DataOutputStream dStream = new DataOutputStream(bStream);
            dStream.writeUTF(cliente.getNome());
            
            dStream.flush();

            byte[] dados = bStream.toByteArray();
            bd.addRecord(dados, 0, dados.length);
            bStream.close();
            dStream.close();
            
            display.setCurrent(
                        new Alert("Gravado!", null,
                        null, AlertType.INFO));
           
        }
        catch( Exception e )
        {
            display.setCurrent(
                        new Alert("Erro", null,
                        null, AlertType.INFO));
        }
             
    }

    public Vector listar()
    {
        Vector vetor = new Vector();
        try
        {
            for( int i = 1; i <= bd.getNumRecords(); i++ )
            {
                byte[] b = new byte[bd.getRecordSize(i)];
                int comp = bd.getRecord(i, b, 0);
                Cliente cliente = new Cliente();
                cliente.setNome( new String(b, 0, comp) );
                vetor.addElement( cliente );
            }

            return vetor;
        }
        catch( Exception e )
        {
            e.printStackTrace();
            throw new RuntimeException(e.getMessage());
        }
    }
}  

Este código, apesar de simplificado funciona, mas quando reinicio,
e faço uma listagem dos registros já armazenados, eles não são
retornados. Parece não haver uma persistência dos dados.

Como resolver isso?

OLHA SO JAVAXXX, NO MEU EMULADOR RODOU NORMAL… GRAVEI 3 STRINGS SAI DO APLICATIVO, ABRI NOVAMENTE, LISTEI, E PRA MINHA SURPRESA ESTAVA LÁ OS TRES NOMES…NAO SATISFEITO, DIGITEI MAIS DOIS NOMES, UM DELES FOI O MEU RS RS RS, E SAI NOVAMENTE DA MIDLET… QUANDO ABRI E LISTEI NOVAMENTE ESTAVAM TODOS LÁ! OS 05 NOMES.

(*)EU TO USANDO A IDE ECLIPSE + ECLIPSE_ME + WTK

(*)NAO PARECE SER PROBLEMA DE CÓDIGO. RODOU NORMAL… :shock:

Uma amiga estava com este problema, pra tirar a dúvida de uma vez po todas, rode seu .jar em algum dispositivo!

RESOLVIDO!

De fato, no IDE não está dando certo, mas rodei no dispositivo e
funcionou. É o mais importante.

Obrigado a todos!