作者llzzyy01 (我是清流)
看板AndroidDev
标题[问题] 使用Handler去抓到SocketThread的值
时间Sat Jul 5 23:13:43 2014
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://webptt.com/cn.aspx?n=bbs/AndroidDev/M.1404573226.A.CB9.html
※ 编辑: llzzyy01 (220.141.130.194), 07/05/2014 23:28:00
2F:→ Deltaguita:你有主thread 去呼叫background 我觉得 不太适合 07/06 01:00
3F:→ Deltaguita:应该是在主Thread 把Backgroung启动之後 等他来通知你 07/06 01:00
4F:→ Deltaguita:这才是正确的 除了要搞懂Handler的用法 07/06 01:01
5F:→ Deltaguita:Observer Pattern 也请你了解一下 对你会很有帮助 07/06 01:02
6F:→ llzzyy01:感谢~~ 07/06 02:00