私はちょうどインターネットからいくつかのコードを試して、それを走らせましたが、私のエミュレータをブロックしました。コードは:このアプリはなぜブロックされていますか?
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