我试图开发一个简单的聊天应用程序,只是为了学习。
我的问题是,当屏幕方向改变时,TCP/IP连接将关闭,并在方向改变后重新创建。
我知道android会破坏活动,并在改变方向时重新创建它。
所以我的问题是:只改变视图是可能的,但其他一切都保持不变?
谢谢
最佳答案
好吧,这里真正的问题是您在主UI线程上执行TCP/IP连接,这是一个糟糕的想法,因为您有可能阻止触摸事件和生成布局。现在大多数新设备上都会抛出一个NetworkOnMainThreadException
来防止这种行为。
我要做的是将tcp/ip连接包装在一个Thread
中,然后在一个worker(非ui,不可见)中用Thread
执行Fragment
。这样可以在配置更改时保护您的setRetainInstance(true)
,因为即使在Thread
被破坏时,Fragment
仍将保留在内存中。您可以阅读更多关于此方法的信息。
如果TCP/IP连接需要跨多个Activity
实例存在,则应改用Activity
。