0
我是android和Java的新手。我試圖開發一個非常簡單的UDP服務器作爲我的第一個Android應用程序(第二個如果考慮Hello World!)。 我已經收集了從網上的代碼,這就是結果:瞭解android UDP服務器應用代碼
package com.example.androidsocketserver;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import android.app.Activity;
import android.widget.TextView;
public class MainActivity extends Activity {
public void updateTextView(String toThis) {
TextView textView = (TextView) findViewById(android.R.id.text2);
textView.setText(toThis);
}
private MyDatagramReceiver myDatagramReceiver = null;
protected void onResume() {
myDatagramReceiver = new MyDatagramReceiver();
myDatagramReceiver.start();
}
protected void onPause() {
myDatagramReceiver.kill();
}
private class MyDatagramReceiver extends Thread {
private boolean bKeepRunning = true;
public void run() {
String message;
byte[] lmessage = new byte[200];
DatagramPacket packet = new DatagramPacket(lmessage, lmessage.length);
try {
DatagramSocket socket = new DatagramSocket(2500);
while(bKeepRunning) {
socket.receive(packet);
message = new String(lmessage, 0, packet.getLength());
if (message != null) {
updateTextView(message);
message = null;
}
}
if (socket != null) {
socket.close();
}
} catch (Throwable e) {
e.printStackTrace();
}
}
public void kill() {
bKeepRunning = false;
}
}
}
不幸的是,應用程序,一旦我啓動它停止了,但我不明白爲什麼。
有沒有人如此善良的幫助我理解我錯過的東西。我試着用模擬器和真正的設備獲得相同的結果。
謝謝大家提前。
在你的問題中添加堆棧跟蹤。 – vjdhama
對不起,但隨着我發佈的代碼,我沒有在Logcat中的消息(我的意思是e.printStackTrace()指令沒有執行,即在運行方法中沒有發現異常)。我相信關閉應用程序的例外發生在「run」的調用之前,但我不知道在哪裏放置staketrace指令。你能建議我嗎?謝謝 – user3650190