2

我知道这个问题已经讨论过好几次了,比如这里这里

但是我的问题仍然没有解决,因为提供的大多数解决方案要么没有被建议,要么被弃用。

我有一个AsyncTask我不断更新TextView文本的地方。通过单击切换按钮开始执行任务。最初,我将其AsyncTask作为主要活动的内部类。但后来我把它改成了一个外部类。

我正在使用onSaveInstanceState()onRestoreInstanceState()方法在方向更改期间存储和恢复 textview 值。我无法实现的是定向后,如何恢复按钮状态并恢复AsyncTask

4

3 回答 3

2

根据此页面: http: //developer.android.com/guide/topics/manifest/activity-element.html#config,如果您的应用程序针对 API 级别 13 或更高,您应该使用android:configChanges="orientation|screenSize"捕获屏幕旋转的onConfigurationChanged()方法.

通过这样做,不会调用onPauseandonResume方法,因此您的 TextView 将保持其值。在我看来,它不会停止正在运行的 AsyncTask。如果是这样,请尝试在onConfigurationChanged方法中调用它。

于 2013-05-02T07:24:43.907 回答
2
  1. 使用Application类,它总是可用的,并将任务存储在一个静态变量中。

  2. 添加一个虚拟片段到 Activity 中setRetainInstance(true),用它来存储和运行 AsyncTasks。它会在旋转时自动附加,Activity 可以通过标签再次找到它。

  3. 使用 Service 运行后台的东西,后台服务不受轮换重启的影响,Activity 可以再次绑定到它。

于 2013-05-02T07:24:51.877 回答
0

为什么不能将按钮状态保存到 中的包中onSaveInstanceState(...),并在 中恢复它onCreate(...),从而根据按钮状态恢复 AsyncTask ?请注意,我的经验是 onCreate(..) 通常在方向更改后被调用,而不是onRestoreInstanceState().

于 2013-05-02T07:17:56.827 回答