編輯:關於Android編程
Android UDP 開發中,在接收數據的時候,有的手機無法阻塞???
原因:
不要在主線程中寫相關UDP代碼,將代碼寫到新建線程run函數中。
問題解決代碼示例:
new Thread(){
public void run()
{
// UDP服務器監聽的端口
Integer port = 8888;
// 接收的字節大小,客戶端發送的數據不能超過這個大小
byte[] buf = new byte[1024];
// 建立Socket連接
DatagramSocket datagramSocket = null;
if(datagramSocket == null)
{
try
{
datagramSocket = new DatagramSocket(null);
datagramSocket.setReuseAddress(true);
datagramSocket.bind(new InetSocketAddress(port));
}
catch (SocketException e)
{
e.printStackTrace();
}
}
try
{
DatagramPacket datagramPacket = new DatagramPacket(buf, buf.length);
try
{
while (isOnResume)
{
// 准備接收數據
datagramSocket.receive(datagramPacket);
String result = new String(datagramPacket.getData() , datagramPacket.getOffset() , datagramPacket.getLength());
Log.e("TAG", result);
// Log.e("UDP Demo", datagramPacket.getAddress().getHostAddress().toString() + ":" + result);
}
}
catch (IOException e)
{
e.printStackTrace();
}
}
catch (Exception e)
{
e.printStackTrace();
}
};}.start();
另外代碼10行到23行的寫法也一並解決了bind failed: EADDRINUSE (Address already in use)的錯誤。!!!!
王月星推薦
Android用TabLayout實現類似網易選項卡動態滑動效果
此前我們用HorizontalScrollView也實現了類似網易選項卡動態滑動效果,詳見 Android選項卡動態滑動效果這篇文章這裡我們用TabLayout來實現這一
Android編程基礎之獲取手機屏幕大小(DisplayMetrics應用)示例
本文實例講述了Android獲取手機屏幕大小的方法。分享給大家供大家參考,具體如下:這裡主要用了三個對象TextView ,Button ,以及DisplayMetric
Android官方開發文檔Training系列課程中文版:動畫視圖之轉場框架介紹
原文地址:http://android.xsoftlab.net/training/transitions/index.html引言Activity所呈現的UI經常會由用
安卓手機重置便攜式熱點密碼方法
安卓手機重置便攜式熱點密碼方法如何?小編就來演示一下。 開啟手機,進入手機設置界面; 選擇“無線和網絡”; 選擇&