我有一个运行一个简单的AsyncTask的活动。为了保持AsyncTask在屏幕旋转期间运行,我使用onRetaingNonConfigurationInstance()将AsyncTask传递给新的Activity,如线程How to handle an AsyncTask during Screen Rotation?中的一个答案中推荐的那样。然后,我更新AsyncTask中Activity的指针,以确保它仍然可以从onProgressUpdate()更新进度对话框。在旋转期间保持AsyncTask,但不在活动删除
我的问题是,使用这种方法,我无法检测活动是否只是旋转(在这种情况下,我想继续运行AsyncTask),或者如果活动被主页按钮隐藏,在这种情况下,我想停止AsyncTask。但是,我可以检测后退按钮的用法,因为在这种情况下,Activity的isFinishing()返回true;
是否有任何机制可以用来区分旋转与主页按钮的使用情况?
感谢您的建议,但我会稍微等一下,看看有人提供更“优雅”的解决方案之前,选择这个作为我接受的答案。 – jmbouffard 2011-04-27 14:17:18
@jmbouffard - 你可能会分析这一点。你已经在使用onRetainingNonConfiguraitonInstance()来处理旋转。确保取消onDestory()中的AsyncTask。这应该是所有需要的。如果用户按下home并且手机不会终止您的活动(并调用onDestroy()),则重新加载活动将使其加载并准备好供用户使用。 – eyespyus 2011-06-02 04:47:12
它不适用于我,因为我希望我的AsyncTask在屏幕旋转发生时继续并在每次旋转时调用onDestroy()。我想将我的活动AsyncTask传递给循环后创建的新Activity。 – jmbouffard 2011-06-03 13:28:10