Android 在轮换更改时重新启动活动
我有一个活动。该活动在Android 在轮换更改时重新启动活动,android,android-fragments,android-activity,screen-rotation,adview,Android,Android Fragments,Android Activity,Screen Rotation,Adview,我有一个活动。该活动在ViewPager中包含一个片段。片段需要复制文件(使用ProgressDialog),但当我在忙时旋转屏幕时,活动会重新启动,一切都会停止 我尝试将android:configChanges=“orientation | screenSize”添加到AndroidManifest中,但这也不是一个解决方案,因为这样我的AdView和工具栏就不会在旋转更改时重新加载: 之前: 之后: (注意工具栏和AdView高度的差异?) 如何使用工作的工具栏和AdView使活动/
ViewPager
中包含一个片段。片段需要复制文件(使用ProgressDialog
),但当我在忙时旋转屏幕时,活动会重新启动,一切都会停止
我尝试将android:configChanges=“orientation | screenSize”
添加到AndroidManifest中,但这也不是一个解决方案,因为这样我的AdView
和工具栏就不会在旋转更改时重新加载:
之前:
之后:
(注意工具栏和AdView高度的差异?)
如何使用工作的工具栏
和AdView
使活动/片段保持活动状态
谢谢
需要复制文件
关于Android,很少有人意识到,Activity
和Fragment
不是执行长时间运行操作的地方,比如从互联网下载东西或复制文件
Activity
和Fragment
都是UI元素,可以在没有太多警告的情况下销毁、重新创建它们
处理此类问题的正确方法是使用服务
执行长时间运行的操作,活动
或片段
应启动服务,然后立即“绑定”到它,在旋转时再次执行通常的解除绑定
和绑定
您可以在此处阅读有关服务和边界服务的内容:
活动(或片段)绑定到服务后
可以将其自身注册为侦听器,服务向其报告操作的状态/进度
最重要的是,如果活动与服务断开连接,服务可以使用命令startForeground
在设备状态栏上发出通知,并持续通知用户操作进度,而无需活动
我知道这样做需要更多的代码,而且更复杂。但这是正确的方法。你可能需要两种布局——将应用程序设置为纵向/横向;应用程序是否需要允许两种方向;如果没有,你可以在活动标签android:screenOrientation=“Grait”@DJphy下的清单中使用它。应用程序需要能够旋转以获得良好的用户体验。@Tasos布局不是问题,需要“重新创建”工具栏和Adview
。我所能做的就是对问题进行投票;这就是我现在所做的;好问题;但是android帮不了你,我想:)谢谢你的回答。我会试试看,如果成功的话,我会接受的。一个小问题。用片段
或活动
绑定它更好吗?这没有什么区别。从控制进度条的选项绑定。在转到这些选项之前,请查看其他选项,例如加载程序lengths@brandallLoaders用于在后台线程中加载数据,并将其传递回UI。在这种情况下,他需要完成流程,而不管UI是否存在