Я просто попробовал код из Интернета и запустил его, но он заблокировал мой эмулятор. Код:Почему это приложение блокирует?
public void getcontents()
{
HttpConnection c = null;
InputStream is = null;
StringBuffer sb = new StringBuffer();
try
{
c = (HttpConnection)Connector.open("http://www.java-samples.com",Connector.READ_WRITE, true);
c.setRequestMethod(HttpConnection.GET); //default
is = c.openInputStream(); // transition to connected!
int ch = 0;
for(int ccnt=0; ccnt < 150; ccnt++) { // get the title.
ch = is.read();
if (ch == -1){
break;
}
sb.append((char)ch);
}
}
catch (IOException x){
x.printStackTrace();
}
finally{
try{
is.close();
c.close();
} catch (IOException x){
x.printStackTrace();
}
}
System.out.println(sb.toString());
}
Я вызвал функцию с помощью команды OK.
Эмулятор заблокирован, пока я не убил процесс. Как это решить?
Не знаю, как Java реализует потоки, но я предполагаю, что программа ожидает данных потока. Если это займет некоторое время или продолжает ждать, создайте отдельный поток для функции, которая будет запущена. Чтобы программа продолжала работать, а не ждать завершения getContents. Тем не менее, это я просто догадываюсь. – PeeHaa 2010-12-04 20:47:00