我试图让我的用户在屏幕上移动一个块,同时还监听 DatagramSocket 上的连接,这是我的 onTouchEvent
public boolean onTouchEvent( MotionEvent event )
{
if ( event.getAction() == MotionEvent.ACTION_DOWN )
{
if( event.getY() > getHeight() - 50 )
{
gameState.setRunning( false );
((Activity)getContext()).finish();
}
else
{
touched = true;
Log.d(TAG, "Coords: x=" + event.getX() + ",y=" + event.getY());
}
checkCollisions( event.getX(), event.getY() );
}
if ( event.getAction() == MotionEvent.ACTION_MOVE )
{
checkCollisions( event.getX(), event.getY() );
}
if ( event.getAction() == MotionEvent.ACTION_UP )
{
touched = false;
}
return true;
}
这是我的服务器代码
public void run()
{
Log.d(TAG, "Ip address used:" + getLocalIPAddress() );
while( true )
{
//Receive some data
byte[] buf = new byte[256];
DatagramPacket packet = new DatagramPacket( buf, buf.length );
try
{
socket.receive( packet );
}
catch (IOException e)
{
Log.d(TAG, "Error with receiving data");
e.printStackTrace();
}
String data = new String( buf, 0, packet.getLength() );
Log.d(TAG, "Data received was :" + data);
}
}
现在我的服务器工作正常,但是当服务器等待连接时,客户端不能做任何事情,现在我知道可以启动一个线程,但这不会仍然阻塞 onTouchEvent 吗?
帆布
更新
我使用 AsyncTask 将运行实现为 doInBackground,它现在可以正常工作,没有问题,我可以使用我的应用程序并等待客户端连接,这应该可以正常工作,为帮助的人干杯。
帆布