Activity 旋转改变时重启
Activity restart on rotation change
我有一个 activity。 activity 在 ViewPager
中包含 Fragment
。该片段需要复制文件(带有ProgressDialog
),但是当我在忙碌时旋转屏幕时,activity重新启动并且一切都停止了。
我尝试将 android:configChanges="orientation|screenSize"
添加到 AndroidManifest,但这也不是解决方案,因为那样的话我的 AdView
和 Toolbar
将不会在旋转更改时重新加载:
之前:
之后:
(注意到 Toolbar 和 AdView 高度的区别了吗?)
如何让 Activity/Fragment 保持活动状态,使 Toolbar
和 AdView
正常工作?
谢谢
needs to copy files
很少有人意识到 Android 是 Activity
和 Fragment
不是执行长 运行 操作的地方,例如从互联网下载东西或复制文件。
Activity
和 Fragment
都是 UI 元素,可以在没有太多警告的情况下销毁、重新创建。
处理此类问题的正确方法是让Service
执行长运行操作,Activity
或Fragment
应该启动服务然后立即 "bind" 到它,在旋转时再次执行通常的 unbind
和 bind
。
您可以在此处阅读有关服务和边界服务的信息:http://developer.android.com/guide/components/bound-services.html
在 activity(或片段)绑定到 Service
之后,它可以将自己注册为侦听器,服务向其报告操作的 status/progress .
最重要的是,如果activity与服务断开连接,服务可以使用命令startForeground
在设备状态栏上放置一个通知,并不断通知用户操作无需 activity
即可取得进展
我知道这种方式需要更多的代码并且更复杂。但这是正确的做法。
我有一个 activity。 activity 在 ViewPager
中包含 Fragment
。该片段需要复制文件(带有ProgressDialog
),但是当我在忙碌时旋转屏幕时,activity重新启动并且一切都停止了。
我尝试将 android:configChanges="orientation|screenSize"
添加到 AndroidManifest,但这也不是解决方案,因为那样的话我的 AdView
和 Toolbar
将不会在旋转更改时重新加载:
之前:
之后:
(注意到 Toolbar 和 AdView 高度的区别了吗?)
如何让 Activity/Fragment 保持活动状态,使 Toolbar
和 AdView
正常工作?
谢谢
needs to copy files
很少有人意识到 Android 是 Activity
和 Fragment
不是执行长 运行 操作的地方,例如从互联网下载东西或复制文件。
Activity
和 Fragment
都是 UI 元素,可以在没有太多警告的情况下销毁、重新创建。
处理此类问题的正确方法是让Service
执行长运行操作,Activity
或Fragment
应该启动服务然后立即 "bind" 到它,在旋转时再次执行通常的 unbind
和 bind
。
您可以在此处阅读有关服务和边界服务的信息:http://developer.android.com/guide/components/bound-services.html
在 activity(或片段)绑定到 Service
之后,它可以将自己注册为侦听器,服务向其报告操作的 status/progress .
最重要的是,如果activity与服务断开连接,服务可以使用命令startForeground
在设备状态栏上放置一个通知,并不断通知用户操作无需 activity
我知道这种方式需要更多的代码并且更复杂。但这是正确的做法。