在我的应用程序中,我必须连接到服务器,我在单独的线程中执行此操作,并且我希望连接保持活动状态,只要我的应用程序的活动在屏幕上可见。我也希望如果用户离开我的应用程序,线程会中断并且连接关闭。只要应用程序在屏幕上,网络线程必须存在
这里的主要问题是,如果用户旋转屏幕,当前活动就会被破坏,我无法区分这种情况与用户真正离开我的活动的情况。方法onRetainNonConfigurationInstance()
不起作用,因为它在onStop()
之后被调用,并且我想关闭onStop()
中的连接。
我也尝试了绑定服务,但问题是完全一样的,服务在我旋转屏幕时关闭。
而我不想自己处理配置更改。
我该怎么办?
是的,问题是,开发指南说这只能作为最后的手段,所以我宁愿不使用这个解决方案。 – 2011-04-21 13:53:16
@Guillaume我个人认为这种情况是这样的:“_在某些特殊情况下,您可能希望绕过基于一种或多种配置更改重新启动活动。”(来自[活动生命周期文档]( http://developer.android.com/reference/android/app/Activity.html#ConfigurationChanges))但是,如果有另一个更优雅的解决方案,我想听听它,因为我面临类似的问题几次,并总是诉诸于使用上述方法。 – Stephan 2011-04-21 14:14:53
我可以看到另一个解决方案,但这可能有点难看。当每个活动停止时,在线程中启动一个计时器(例如10秒),并且如果在计时器结束时每个活动仍然停止,则中断该线程。好的副作用是,它允许用户在几秒钟内退出应用程序(例如读取SMS)而无需断开连接。 – 2011-04-21 16:00:19