Я читал во многих местах, что сетевое соединение в приложении j2me должно выполняться в отдельном потоке. Это необходимость или хорошо иметь?
Я спрашиваю об этом, потому что нигде не смог найти написанного, что это должно быть сделано в отдельном потоке. Кроме того, когда я написал простое приложение для извлечения изображения по сети и отображения его на экране (без использования потока), оно не работало. Когда я изменил то же самое, чтобы использовать отдельный поток, это работало. Я не уверен, сработало ли это только потому, что я изменил его в отдельный поток, как я сделал много других изменений в коде.
Может кто-нибудь подтвердить, пожалуйста?
Edit:
Если запуск в отдельном потоке не является необходимостью, может кто-нибудь сказать, почему не работает приведенный ниже простой фрагмент кода?
Наступает этап, когда эмулятор спрашивает: "Можно ли подключиться к сети". Независимо от того, нажимаю ли я «да» или «нет», экран не меняется.
public class Moo extends MIDlet {
protected void destroyApp(boolean arg0) throws MIDletStateChangeException {
// TODO Auto-generated method stub
}
protected void pauseApp() {
}
protected void startApp() throws MIDletStateChangeException {
Display display = Display.getDisplay(this);
MyCanvas myCanvas = new MyCanvas();
display.setCurrent(myCanvas);
myCanvas.repaint();
}
class MyCanvas extends Canvas {
protected void paint(Graphics graphics) {
try {
Image bgImage = Image.createImage(getWidth(), getHeight());
HttpConnection httpConnection = (HttpConnection) Connector
.open("https://stackoverflow.com/content/img/so/logo.png");
Image image = Image.createImage(httpConnection
.openInputStream());
bgImage.getGraphics().drawImage(image, 0, 0, 0);
httpConnection.close();
graphics.drawImage(bgImage, 0, 0, 0);
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
Редактировать : Я получил свой ответ для кода здесь .
Редактировать: Я породил отдельный вопрос этого здесь .