[問題] 使用Handler去抓到SocketThread的值

作者: llzzyy01 (我是清流)   2014-07-05 23:13:43
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溝通的神奇功能嗎
我自己定義的函式就無法做到
作者: Deltaguita (貝里斯)   2014-07-06 00:56:00
http://ppt.cc/G2Zf你有主thread 去呼叫background 我覺得 不太適合應該是在主Thread 把Backgroung啟動之後 等他來通知你這才是正確的 除了要搞懂Handler的用法Observer Pattern 也請你了解一下 對你會很有幫助
作者: llzzyy01 (我是清流)   2014-07-06 02:00:00
感謝~~

Links booklink

Contact Us: admin [ a t ] ucptt.com