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是否存在