Java 如果我切换到其他应用程序,TCP服务器套接字将关闭

Java 如果我切换到其他应用程序,TCP服务器套接字将关闭,java,android,Java,Android,最后我成功地打开了tcp(客户机-服务器)套接字 但问题是,当我在我的服务器应用程序和其他应用程序之间切换,然后切换回我的服务器应用程序时,我发现服务器套接字已关闭 我在线程中打开了服务器套接字 我认为我的问题在于“切换到另一个应用程序时停止线程,然后在切换回我的应用程序时重新启动线程” 注: 我没有实现“onPuse或onStop”。在android中,是否保持应用程序运行的决定很大程度上取决于上下文的存在,无论它是活动、服务还是广播接收器 根据android的文档: 空进程是不承载任何活动或

最后我成功地打开了tcp(客户机-服务器)套接字

但问题是,当我在我的服务器应用程序和其他应用程序之间切换,然后切换回我的服务器应用程序时,我发现服务器套接字已关闭

我在线程中打开了服务器套接字

我认为我的问题在于“切换到另一个应用程序时停止线程,然后在切换回我的应用程序时重新启动线程”

注:
我没有实现“onPuse或onStop”。

在android中,是否保持应用程序运行的决定很大程度上取决于
上下文的存在,无论它是
活动
服务
还是
广播接收器

根据android的文档:

空进程是不承载任何活动或其他应用程序组件(如服务或BroadcastReceiver类)的进程。当内存变低时,系统会很快杀死这些数据。因此,您在活动外部执行的任何后台操作都必须在活动广播接收器或服务的上下文中执行,以确保系统知道需要保留您的流程

因此,您要做的是在活动启动后启动一个服务,并从该服务生成一个线程来管理TCP服务器。这样,只要进程正在运行,您就可以了

下面是一个描述android中进程状态的链接:


有关服务的更多信息,请签出此

非常感谢我,但是我可以在没有线程的服务中打开TCP服务器套接字吗?可以,但不应该,因为服务在主线程(UI线程)上运行因此,当我从服务内的线程打开TCP服务器套接字时,您将阻止UIT?如果我切换到另一个应用并切换回我的应用,套接字是否将关闭?是的,您应该从服务内的线程打开服务器,否,无论用户导航如何,它都应保持运行。