Android usb串行到web服务器应用程序包装器停止工作
我正在尝试为Android制作一个简单的web服务器应用程序,它从URL获取查询字符串,通过USB串行电缆传输到串行设备,并以文本/普通格式返回收到的响应。web服务器被实现为一个扩展线程的类,它和USB串行代码已经工作了一段时间。(我认为TCP/IP网络操作需要一个单独的线程。) 我希望服务器在连接USB串行电缆时启动,在拔下电缆时停止。通过这样做,我可以利用“每次连接设备时启动此应用程序”,因此我不必每次都向用户请求USB权限。没有UI,所以最初我认为我可以制作一个只提供服务的应用程序,但我发现Android假设它正在启动一个带有主要活动的应用程序。当连接电缆时,我确实启动正常。我想我最终可以用一个半透明的屏幕创建一个空的主活动,并在启动服务后调用finish。我有一个广播接收器,它似乎正在捕捉USB断开连接的事件 我一直在苦苦挣扎的是,安卓经常说,不幸的是,你的应用程序已经停止工作,想要关闭它(终止进程)。它确实似乎挂断了UI,不确定如何挂断,因为我调用了finish。web服务器线程即使在“您的应用程序已停止工作”消息出现时也会继续正常工作,并且它会继续正常工作,直到我回答“是”,这会终止进程 由于我的愿望是在空的主活动完成后保持服务运行,所以我在服务中需要做什么特殊的事情吗?我走对了吗?服务是否需要在自己的进程中运行Android usb串行到web服务器应用程序包装器停止工作,android,service,Android,Service,我正在尝试为Android制作一个简单的web服务器应用程序,它从URL获取查询字符串,通过USB串行电缆传输到串行设备,并以文本/普通格式返回收到的响应。web服务器被实现为一个扩展线程的类,它和USB串行代码已经工作了一段时间。(我认为TCP/IP网络操作需要一个单独的线程。) 我希望服务器在连接USB串行电缆时启动,在拔下电缆时停止。通过这样做,我可以利用“每次连接设备时启动此应用程序”,因此我不必每次都向用户请求USB权限。没有UI,所以最初我认为我可以制作一个只提供服务的应用程序,但我
提前感谢您提供的任何见解。该服务不需要位于自己的流程中,但需要在自己的线程上运行 确保您的web服务器扩展了“服务”类,并生成了一个线程来完成这项工作。在onstart命令中,执行以下操作
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Thread t = new Thread() {
public void run() {
// do web server stuff
}
};
t.start();
// We want this service to continue running until it is explicitly
// stopped, so return sticky.
return START_STICKY;
}
然后确保在广播接收器或活动类中没有完成长时间运行的工作