JavaME: ProximityListener уничтожен / незарегистрирован после одного использования? - PullRequest
1 голос
/ 31 января 2010

У меня следующая проблема: мы зарегистрировали разные ProximityListeners в JavaME для LocationProvider. Все отлично работает с эмуляцией внешних событий, и метод Рядом событие запускается правильно.

Проблема: после «одного использования» метод больше не запускается. LocationProvider по-прежнему работает хорошо, потому что позиция меняется, но ProximityListener ничего не делает, пока вы не добавите его снова.

API говорит:

Независимо от состояния ProximityListener остается зарегистрированным до тех пор, пока приложение явно не удалит его с помощью LocationProvider.removeProximityListener или приложение не закроется.

Но я не вижу такого поведения, есть ли ошибка или общее недоразумение?

1 Ответ

0 голосов
/ 12 февраля 2010

Я действительно когда-либо использовал JSR 179 только в Nokia Series 60, но я помню ошибку при ее использовании, которая также может вызывать ваши проблемы. Когда вы устанавливаете ProximityListener на LocationProvider, вам необходимо сохранить ссылку на LocationProvider в вашем коде, в противном случае он будет очищен как «мусор» какой-либо формы. Пример:

private void startLocationListener() throws Exception {
    LocationProvider lp = LocationProvider.getInstance(null);
    lp.setLocationListener(this);

    // Error on S60, as the location provider is about to go out of scope,
    // and we won't hear about any location updates!  Fix this by declaring lp
    // outwith this method
}

ISTR нашел кого-то, кто тоже сталкивался с этой проблемой (я думаю, что это было на Forum Nokia), в то время, когда я испытывал ее, однако сейчас я не могу найти ссылку

Надеюсь, это поможет.

...