Android 台灣中文網
標題:
Socket接收一陣子就當了
[打印本頁]
作者:
crazy82506
時間:
2013-9-6 19:20
標題:
Socket接收一陣子就當了
小弟有寫一個程式
放到手機裡啟動程式後
手機剛開始會定時接收資料
但是接收了一陣子程式就會當掉
可以幫我看一下是哪邊問題嗎
private TimerTask tm2Task = new TimerTask(){
public void run() {
Message msg = new Message();
InputStream ins;
DataInputStream dos;
int result;
try {
if (socket.isConnected()) {
Thread.sleep(200);
ins = socket.getInputStream();
dos =new DataInputStream(ins);
result = dos.available();
if (result==0) {
result=dos.available();
}
else {
byte[] data =new byte[result];
dos.read(data);
String message =new String(data);
String str1 = message.substring(0,4);
String str2 = message.substring(4);
int INT1 = Integer.parseInt(str1);
switch( INT1 ){
case 1101:
Bundle b1 = new Bundle();
b1.putString("NAME1",str2);
msg.setData(b1);
msg.what = 1 ;
handler.sendMessage(msg);
break;
case 2201:
Bundle b2 = new Bundle();
b2.putString("NAME2",str2);
msg.setData(b2);
msg.what = 2 ;
handler.sendMessage(msg);
break;
case 3301:
Bundle b3 = new Bundle();
b3.putString("NAME3",str2);
msg.setData(b3);
msg.what = 3 ;
handler.sendMessage(msg);
break;
case 1102:
Bundle b11 = new Bundle();
b11.putString("NAME11",str2);
msg.setData(b11);
msg.what = 11 ;
handler.sendMessage(msg);
break;
case 2202:
Bundle b22 = new Bundle();
b22.putString("NAME22",str2);
msg.setData(b22);
msg.what = 22 ;
handler.sendMessage(msg);
break;
case 3302:
Bundle b33 = new Bundle();
b33.putString("NAME33",str2);
msg.setData(b33);
msg.what = 33 ;
handler.sendMessage(msg);
break;
}
}
}
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
};
Handler handler = new Handler() {
public void handleMessage(Message msg) {
switch (msg.what){
case 1:
et1.setText(msg.getData().getString("NAME1"));
e1.setText("ON");
break;
case 2:
et2.setText(msg.getData().getString("NAME2"));
e2.setText("ON");
break;
case 3:
et3.setText(msg.getData().getString("NAME3"));
e3.setText("ON");
break;
case 11:
et1.setText(msg.getData().getString("NAME11"));
e1.setText("OFF");
break;
case 22:
et2.setText(msg.getData().getString("NAME22"));
e2.setText("OFF");
break;
case 33:
et3.setText(msg.getData().getString("NAME33"));
e3.setText("OFF");
break;
}
}
};
複製代碼
作者:
whl
時間:
2013-9-6 21:34
1.貼 log
2.我記得 socket 是用 while 而不是用 timertask 去做 listen
歡迎光臨 Android 台灣中文網 (https://apk.tw/)
Powered by Discuz! X3.1