android中多线程更新UI的实现
由于内部的机制不能多线程更新UI,有一种解决方法是用Handler来解决
方法如下:
调用很简单:
---------------------------------------------------------
android socket传输序列化对象
最好只传基本数据类型,基本数据类型不需要序列化
在上一篇socket传输的基础上改即可
添加一个类,继承Serializable
主要是改变传送的方式
这里的片段
读取
写入
由于内部的机制不能多线程更新UI,有一种解决方法是用Handler来解决
方法如下:
01
02
03
04
05
06
07
08
09
|
Handler myHandler =
new
Handler() {
public
void
handleMessage(Message msg) {
switch
(msg.what) {
case
110
:
//这里写你要更新的内容 break;
}
super
.handleMessage(msg);
}
};
|
调用很简单:
01
02
03
|
Message message=
new
Message();
message.what=
110
;
myHandler.sendMessage(message);
|
---------------------------------------------------------
android socket传输序列化对象
最好只传基本数据类型,基本数据类型不需要序列化
在上一篇socket传输的基础上改即可
添加一个类,继承Serializable
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
<P>
package
com;</P><P>
import
java.io.Serializable;</P><P>
public
class
Message
implements
Serializable{
String uId;
//用户编号
//叫分
String score;
public
Message(String uId, String score) {
this
.uId = uId;
this
.score = score;
}
public
String getuId() {
return
uId;
}
public
void
setuId(String uId) {
this
.uId = uId;
}
public
String getScore() {
return
score;
}
public
void
setScore(String score) {
this
.score = score;
}
}
</P>
|
主要是改变传送的方式
01
02
|
ObjectOutputStream os=
null
;
ObjectInputStream in =
null
;
|
这里的片段
01
02
|
os =
new
ObjectOutputStream(mSocket.getOutputStream());
in =
new
ObjectInputStream(
new
BufferedInputStream(mSocket.getInputStream()));
|
读取
01
02
03
04
05
06
07
08
|
Object obj=
null
;
if
((obj=in.readObject())!=
null
)
{
com.Message mes=(com.Message)obj;
mStrMSG=mes.getScore()+
"\n"
;
//消息换行
mHandler.sendMessage(mHandler.obtainMessage());
// 发送消息
}
|
写入
01
02
03
|
os=
new
ObjectOutputStream(client.getOutputStream());
os.writeObject(
new
com.Message(
"user1:"
,mStrMSG));
os.flush();
|