java – 如何让连接线程保持活动状态? (我需要使用守护进程吗?)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 如何让连接线程保持活动状态? (我需要使用守护进程吗?),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1673字,纯文字阅读大概需要3分钟。
内容图文
![java – 如何让连接线程保持活动状态? (我需要使用守护进程吗?)](/upload/InfoBanner/zyjiaocheng/965/926267a01b5f41e8935b5956d6719adc.jpg)
我的Android应用程序使用线程从通过USB连接的PC侦听套接字连接.在PC打开连接(响应某些用户驱动的事件)后的某个时刻,我想通过它发送一些数据.
public void onCreate(Bundle savedInstanceState) {
// SNIP: stuff and nonsense
connection = new Thread(new ServerThread());
connection.start();
}
public boolean onTouchEvent(MotionEvent event) {
// SNIP: decide what to do; create string 'coordString'
Message coordMsg = coordHandler.obtainMessage();
Bundle coordMsgData = new Bundle();
coordMsgData.putString("coords", coordString);
coordMsg.setData(coordMsgData);
if(coordHandler!=null)
{
coordHandler.sendMessage(coordMsg);
}
return false;
}
public class ServerThread extends Thread
{
public void run() {
this.setName("serverThread");
Looper.prepare();
coordHandler = new Handler()
{
@Override
public void handleMessage(Message msg) {
Log.v(INNER_TAG,"here");
}
};
// SNIP: Connection logic here
Looper.loop();
}
}.
多年来,我一直在摸不着头脑,想知道为什么我从未在触摸事件后看到INNER_TAG的值出现在我的日志中.我可以使用日志调试来跟踪执行到coordHandler!= null块,但处理程序似乎永远不会触发.
然后它让我感到震惊:线程可能在完成连接后退出. D’呃!不太确定我以前发生过什么事情,但我会责怪它认为Loop正在做一些神奇的事情.
所以我的问题是:如何保持我的线程运行?官方Android dev reference on threads简要提到了这一点
A Thread can also be made a daemon, which makes it run in the background.
这自然使我的* nix感觉刺痛. (顺便说一下,你看过新的蜘蛛侠电影了吗?它还不错.)守护进程是答案吗?还是我完全失去了阴谋?
解决方法:
在Android中使用服务.
您可以使用服务在后台运行..
看到这个链接:
http://developer.android.com/reference/android/app/Service.html
请参阅此链接以获取示例:
Example: Communication between Activity and Service using Messaging
内容总结
以上是互联网集市为您收集整理的java – 如何让连接线程保持活动状态? (我需要使用守护进程吗?)全部内容,希望文章能够帮你解决java – 如何让连接线程保持活动状态? (我需要使用守护进程吗?)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。