나는 UDP 서버로 멀티 플레이어 게임을하고 있는데 루프의 첫 번째 반복 이후 서버 스레드가 멈추는 이유를 모르겠습니다. 여기Android 액티비티에서 무작위로 멈춤
public class GameActivity extends Activity {
public ServerUDP t;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.activity_game);
t = new ServerUDP();
t.setRunning(true);
t.start();
}
@Override
protected void onPause()
{
super.onPause();
t.setRunning(false);
t.interrupt();
}
@Override
protected void onDestroy()
{
super.onDestroy();
t.setRunning(false);
t.interrupt();
}
}
와 서버 코드 : 다음은 스레드를 시작하는 활동의 코드가
public class ServerUDP extends Thread
{
private boolean mRun;
private DatagramSocket serverSocket ;
private byte[] receiveData;
private byte[] sendData;
private int ServerPort = 9000;
ServerUDP()
{
try {
if(serverSocket == null)
{
serverSocket = new DatagramSocket(null);
serverSocket.setReuseAddress(true);
serverSocket.bind(new InetSocketAddress(ServerPort));
receiveData = new byte[1024];
sendData = new byte[1024];
}
} catch (SocketException e) {
e.printStackTrace();
}
}
@Override
public void run()
{
while (mRun)
{
Log.v("socket","in loop");
sendData = "test".getBytes();
InetAddress local;
try {
local = InetAddress.getByName("10.0.2.2");
Log.v("socket","Sent"+sendData);
DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length,local, 8088);
serverSocket.send(sendPacket);
} catch (IOException e) {
e.printStackTrace();
}
DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
try {
serverSocket.receive(receivePacket);
String receiveString = new String(receivePacket.getData());
Log.v("RECEIVED",receiveString);
} catch (IOException e1) {
e1.printStackTrace();
}
}
}
public void setRunning(boolean b)
{
mRun = b;
}
}
문제는 내가 단 하나의 "루프"얻을 것입니다 메시지. 내 스레드가 하나의 루프 후에 죽는 것 같습니다. 내가 디버그 모드에서 확인하고 아직 살아 있지만 서버 루프를 다시 통과하지 않습니다.
왜 그런가?
나는 그것을 시험해 보았다. 0 예외가있다. –