最后我成功打开了 tcp (client-server) socket,
但问题是当我在我的服务器应用程序和其他应用程序之间切换,然后切换回我的服务器应用程序时,我发现服务器套接字已关闭......!
我在一个线程中打开了服务器套接字。
我认为我的问题在于“切换到另一个应用程序时停止线程,然后切换回我的应用程序时重新启动线程”
注意:我没有实现“onPuse 或 onStop”。
在 android 中,是否让你的应用程序运行的决定很大程度上取决于 a 的存在,Context
它是Activity
,Service
还是BroadcastReceiver
。
根据android的文档:
一个空进程是一个不承载任何活动或其他应用程序组件(例如服务或广播接收器类)的进程。当内存变低时,它们会很快被系统杀死。因此,您在活动之外执行的任何后台操作都必须在活动广播接收器或服务的上下文中执行,以确保系统知道它需要保留您的进程。
因此,您要做的是在您的活动启动后启动一个服务,并从该服务产生一个管理 TCP 服务器的线程。这样,只要进程正在运行,您就会没事的。
这是一个描述android中进程状态的链接:ProcessLifecycle
有关服务的更多信息,请查看此链接