轮换更改时活动重启

时间:2016-03-26 12:26:42

标签: android android-fragments android-activity screen-rotation adview

我有一项活动。该活动在Fragment中包含ViewPager。片段需要复制文件(使用ProgressDialog),但是当我在忙碌时旋转屏幕时,活动会重新开始,一切都会停止。

我尝试将android:configChanges="orientation|screenSize"添加到AndroidManifest,但这不是解决方案,因为我的AdViewToolbar不会在轮换更改时重新加载:

在:

后:

(注意与工具栏和AdView高度的区别?)

如何通过有效ToolbarAdView来保持活动/片段活着?

由于

1 个答案:

答案 0 :(得分:1)

  

需要复制文件

人们通常对Android的了解很少,ActivityFragment不是执行长时间运行操作的地方,例如从互联网下载内容或复制文件。

ActivityFragment都是UI元素,可以在没有太多警告的情况下销毁,重新创建。

处理此类问题的正确方法是让Service执行长时间运行的操作,ActivityFragment应该启动服务,然后立即“绑定”它,在轮换时再次执行通常的unbindbind

您可以在此处阅读有关服务和边界服务的信息:http://developer.android.com/guide/components/bound-services.html

将活动(或片段)绑定到Service之后,它可以将其自身注册为侦听器,并且服务会向其报告操作的状态/进度。

除此之外,如果活动与服务断开连接,服务可以使用命令startForeground在设备状态栏上发出通知,并不断向用户通知操作进度,而无需activity

我知道这种方式会占用更多代码并且更复杂。但这是正确的做法。