Я работаю над приложением J2ME, которое должно быть перенесено на телефоны разных производителей. Пока приложение работает нормально, за исключением Motorola V3 (это единственный телефон Motorola, который я пробовал).
Проблема в том, что когда я запускаю новый поток и когда поток пытается обновить графику (вызывая repaint ()), графическая система становится стеком.
Некоторая полезная информация: - Я получаю отображение в конструкторе мидлета и повторно использую его в течение жизненного цикла приложения. - Есть только один класс, расширяющий Canvas. Здесь происходит каждый розыгрыш. Когда мне нужно перерисовать графику, я вызываю метод repaint () либо из потока пользовательского интерфейса, либо из другого потока Worker. Насколько мне известно, каждый поток может без проблем получить доступ к пользовательскому интерфейсу. - Я попробовал исправить, в котором в начале приложения я беру имя запущенного (UI) потока и сохраняю его для дальнейшего использования. Перед вызовом repaint () я проверяю, совпадает ли имя текущего потока с именем потока пользовательского интерфейса. Если одес, то делаю repaint()
, иначе:
display.callSerially(new Runnable() {
public void run() {
repaint();
}
});
Не могли бы вы указать мне на какие-либо особенности реализации J2ME в Motorola? Как я могу решить эту проблему с потоками, обновляющими пользовательский интерфейс?
Спасибо, Златко