【发布时间】:2014-08-19 15:10:53
【问题描述】:
我正在处理一个处理所有服务器连接的线程:
public void run() {
//this initializes Socket and PrintWriter/DataInputStream
connect(server, port);
while(true) {
//queue is a BlockingQueue where I put the messages to send
while(!queue.isEmpty()) s
//COMMUNICATE-WITH-SERVER-CODE
}
}
}
代码有效,但一分钟左右后,我的手机开始过热,电池电量迅速下降。我知道这是因为无限循环。
我该如何解决?我想要一个Thread,它一旦启动,就会保持与服务器的连接(这样DataInputStream 和PrintWriter 就不会每次都被初始化)。而且我希望线程能够响应:当我单击 Button 时,它应该立即向服务器发送一条消息进行处理。
我已经实现了一个Handler 用于与Thread->Activity 通信。但是Activity->Thread怎么沟通呢?
欢迎任何提示。
【问题讨论】:
-
Thread.sleep(100)应该有帮助。 -
@MohammadAliBaydoun 谢谢!
-
使用真正“阻塞”的队列比在应用中引入平均 50 毫秒的延迟要好。
标签: android multithreading networking android-activity communication