[問題] 使用Handler去抓到SocketThread的值
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溝通的神奇功能嗎
我自己定義的函式就無法做到
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.141.130.194
※ 文章網址: http://www.ptt.cc/bbs/AndroidDev/M.1404573226.A.CB9.html
※ 編輯: llzzyy01 (220.141.130.194), 07/05/2014 23:28:00
推
07/06 00:56, , 1F
07/06 00:56, 1F
→
07/06 01:00, , 2F
07/06 01:00, 2F
→
07/06 01:00, , 3F
07/06 01:00, 3F
→
07/06 01:01, , 4F
07/06 01:01, 4F
→
07/06 01:02, , 5F
07/06 01:02, 5F
→
07/06 02:00, , 6F
07/06 02:00, 6F
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 2 篇):