避免在android中的方向更改时使用asynctask重新加载活动

moh*_*han 17 android screen-orientation android-asynctask

如何在用户更改方向时,如何避免在活动中使用asynctask类重新加载活动?谁能举个例子?

hac*_*bod 75

请关闭配置更改作为最后的手段.发生这种情况时,您的应用必须正常工作 如果您关闭方向配置更改,因为它中断,您的应用程序仍然会在其他方面中断,有时会更细微.由于方向配置更改而允许重新启动活动是一种非常好的方法,可以轻松测试应用程序的这些重要代码路径,否则这些路径通常会少得多,但仍会导致用户失败.

要跨Activity实例传输活动对象,请使用新的片段静态库,它允许您创建跨实例保留的片段.

  • @hackbod:仅供参考,对于Android JavaDocs中方法的链接,我使用URL缩短器(特别是goo.gl,由Chrome扩展程序提供). (8认同)
  • 你能指点一些能够解释"跨越实例为你保留的片段"的内容吗? (3认同)
  • http://developer.android.com/reference/android/app/Fragment.html#setRetainInstance(boolean)(很抱歉,链接已损坏 - 我不知道如何将这些类型的链接放入StackOverflow.你'我需要在最后添加一个紧密的括号.) (3认同)
  • @hackbod:我意识到我参加这个派对已经迟到了,但是使用VideoView的活动/片段似乎是关闭配置更改的好选择.我尝试过setRetainsInstance(),我似乎无法避免重新创建/重新缓冲VideoView.请参阅:http://stackoverflow.com/questions/17513763/retained-fragment-not-retained.我错过了什么吗? (3认同)

Uda*_*yan 3

奇拉格已经正确地指出了解决方案。

AsyncTask我只是想补充一点,Activity 的重新启动与其中的内容无关。默认情况下,当有任何配置更改时,活动将重新启动,除非活动显式处理配置更改。这是通过在清单文件中创建一个条目来完成的。

浏览此链接开发人员指南:android:configChanges

注意:检查设备上的代码而不是模拟器上的代码。因为我之前也遇到过类似的问题。相同的代码在模拟器上不起作用,但在设备上完美运行。因此,在清单中添加条目android:configChanges并在 Android 设备而不是模拟器上检查应用程序。

我第二个@hackbod。仅在必要时才这样做!