[问题] 使用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