JavaME MIDlet не будет очищать переменные? - PullRequest
3 голосов
/ 11 января 2011

Я написал программу JavaME, которая обращается к веб-службе для получения значений, веб-служба работает на сервере Tomcat.

Я сталкиваюсь с очень странной проблемой, когда я запускаю программу, программазагружает новые значения, как я ожидал, но вместо добавления их в унифицированный массив он, похоже, сохраняет предыдущие значения массивов и просто добавляет их.Возможно, код объяснит это лучше.

Сначала я создаю строковый массив для хранения извлеченных значений и небольшого значения int, которое будет использоваться при их цикле, я также создаю хранилище для служб и заглушек:

public class StockQuery extends MIDlet implements CommandListener
{
    String[] newResults = null;
    int i = 0;
    String stockSym = null;
    getDataService service = null;
    .....

После запуска метода startApp () мидлет вызывает форму, и это позволяет ввести значение в текстовое поле, а затем нажать кнопку отправки, чтобы отправить значение на сервер. Этот сервер отправит обратномассив значений (18, если быть точным).Чтобы реализовать это, я затем вызываю метод commandAction ().

public void commandAction(Command c, Displayable d)
{
    else if(c == cmdSend)
    {
        stockSym = getSym.getString();
        service = new getDataService_Stub();
        try
        {
            newResults = service.getStock(stockSym);
            for(i=0; i<newResults.length; i++)
            {
                System.out.println("Data " + i + "    -    " + newResults[i]);
            }
        }
        catch (RemoteException ex)
        {
            ex.printStackTrace();
        }

Теперь программа должна загрузить и поместить 18 значений в строковый массив и цикл через них.Он делает это, но не сбрасывает предыдущие значения из массива по причинам, которые я не могу понять.

Например, в первый раз, когда я выполнил цикл, программа выполнила цикл и напечатала 18 значений, однако во второй раз она напечатала исходные 18 значений из предыдущего запуска и затем дополнительные 18 значений, которые были у неетолько что скачал.Я закрыл свою среду IDE, перезапустил компьютер и удалил папку кэша Netbeans, и по какой-то причине он всегда будет хранить значения в строковом массиве и значение цикла, даже если я объявил его равным 0 при каждом запуске программы.

Сейчас у меня 15-й запуск программы, и вывод программы:

 Data 267    -    34092040
 Data 268    -    22.73 - 31.58
 Data 269    -    NasdaqNM
 Data 270    -    1.95

Кто-нибудь может объяснить, почему переменные не очищаются?

1 Ответ

0 голосов
/ 19 июля 2012

Кажется, проблема в методе getDataService_Stub.getStock.Возможно, используется постоянство локального устройства для хранения предыдущих данных сервера.Пожалуйста, взгляните на это.

...