当我的Android应用程序转到后台时,我需要保持套接字连接。
目前,套接字是从自己的线程启动,读取和写入的。我还在一个类的静态实例中存储对该线程的引用,这意味着当我的应用程序恢复时,我可以访问该线程的引用。
如果应用程序被销毁,我也不需要保留此套接字。
现在回答我的问题,"我是否需要启动服务来维护此线程,或者我可以继续使用我当前的设计,即存储应用程序恢复静态时所需的所有此类实例容器类?"
我发现到目前为止使用服务的唯一优势是该应用程序可能是操作系统在内存不足或类似情况下被破坏的最后几个应用程序之一(考虑到服务和应用程序驻留在同一进程中)
答案 0 :(得分:0)
一旦您的活动被销毁,您的流程就会成为关闭的候选者。最有可能的是,它会徘徊一段时间而不会被杀死。但在较低端的设备上,内存较少,所有赌注均已关闭。转到设备上的“开发者选项”,然后选中“不要保留活动......”。退出活动并查看结果。
解决方法是使服务保持活动状态。最好带有通知图标,以便用户知道它仍在运行。这正是我用我的音乐应用程序所做的,即使用户切换应用程序,音频流也能继续运行。
另一方面,专用插座连接将使用更多电池和更多用户的数据计划。如果您的套接字大多数时间都处于空闲状态,那么更好的方法可能是套接字连接仅在通过推送通知通知有数据可用时连接到服务器。