Android如果要使用Socket 一般會建議另外開一個Thread
但如何從主Thread去取得SocketThread的值
之前有網友回答使用handler
所以我想問一下我的作法有沒有問題
我先
ConnectHandler cnHandler =new ConnectHandler(this);
再執行
userNum=cnHandler.readInt(conSer);
conSer物件是我連Socket的Thread 裡面有一個readInt()可以取得Server傳來的Integer
public synchronized int readInt(){
int tempInt=-129;
try {
tempInt=this.dis.readInt();
} catch (IOException e) {
e.printStackTrace();
}
return tempInt;
}
最後 class ConnectHandler 有下面這個函式
public int readInt(ConnectServer conSer){
int temp=conSer.readInt();
return temp;
}
所以過程就是 主Thread呼叫Handler的函式,Handler的函式再去呼叫 SocketThread函式
但出來的結果 有時會成功 有時卻會出現 NullPointerException
因為我以前都沒用過Handler 但網路上找到的資料都是用在更新UI
所以我想確認一下我用Handler的方式是對的
另外再問一下,我看Handler的範例都是用 handleMessage()
難不成只有handleMessage()這個函式才能做到跨Thread溝通的神奇功能嗎
我自己定義的函式就無法做到