【发布时间】:2014-06-06 14:31:29
【问题描述】:
我有点迷茫……
我有以下方法,我的应用程序正在关闭而没有强制关闭对话框。我不知道为什么。我觉得应该没问题... 我不能提供更多信息。如果你想要更多,请问我。
public void findCC3000(View view) {
new AsyncTask<String, Integer, String>() {
private ProgressDialog dialog;
protected void onPreExecute() {
dialog = new ProgressDialog(MainActivity.this);
dialog.setMax(64516);
dialog.setCancelable(false);
dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
this.dialog.setProgress(0);
this.dialog.show();
}
@Override
protected String doInBackground(String... strings) {
int port = Integer.valueOf(((EditText) MainActivity.this.findViewById(R.id.editText_port)).getText().toString());
String ip = ((EditText) MainActivity.this.findViewById(R.id.editText_ip)).getText().toString();
try {
out("try to connect");
socket = new Socket(ip, port);
PrintWriter printWriter = new PrintWriter(socket.getOutputStream(), true);
printWriter.println("");
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String fromServer;
out("listen for message");
while ((fromServer = in.readLine()) != null) { //CRASH-------------------------------------------------------
out(fromServer);
if (fromServer.equals("Connected to CC3000")) {
out("CC3000 found! : " + ip);
//startListenThread();
out("Started Lissten thread " );
findViewById(R.id.button_connect).setEnabled(false);
findViewById(R.id.joystickView_geschwindigkeit).setEnabled(true);
findViewById(R.id.joystickView_lenkung).setEnabled(true);
return ip;
}
}
} catch (UnknownHostException e) {
out(e.getMessage());
} catch (IOException e) {
out(e.getMessage());
}
return "";
}
protected void onProgressUpdate(Integer... progress) {
dialog.setProgress(progress[0]);
}
protected void onPostExecute(String result) {
if (dialog != null && dialog.isShowing()) {
dialog.dismiss();
}
if (result.isEmpty())
Toast.makeText(MainActivity.this, "CC3000 not found! :(", Toast.LENGTH_SHORT).show();
else
Toast.makeText(MainActivity.this, "CC3000 found! :)", Toast.LENGTH_SHORT).show();
ip = result;
}
}.execute("192.168.");
}
但我知道那个地方。 所以重要的部分是(readLine()):
while ((fromServer = in.readLine()) != null) { //CRASH-------------------------------------------------------
out(fromServer);
if (fromServer.equals("Connected to CC3000")) {
out("CC3000 found! : " + ip);
//startListenThread();
out("Started Lissten thread " );
findViewById(R.id.button_connect).setEnabled(false);
findViewById(R.id.joystickView_geschwindigkeit).setEnabled(true);
findViewById(R.id.joystickView_lenkung).setEnabled(true);
return ip;
}
}
这是我的 Logcat:
06-06 16:12:16.494 20152-20166/de.mayerhofersimon.cc3000.main W/dalvikvm﹕threadid=11: 线程以未捕获的异常退出 (组=0x4155dce0)
希望你能帮忙。
问候
【问题讨论】:
-
查看您未过滤的 logcat - 我怀疑您会在那里发现本机代码崩溃和堆栈转储。
-
只有 UI 线程应该接触 UI
标签: java android bufferedreader forceclose