2011-05-02 84 views
0

我有一个活动,在工作线程加载我的游戏时显示加载屏幕。加载工作线程时会在活动上更新文本视图以显示其当前状态。完成后,它将关闭加载活动并开始实际的游戏活动。 工作者线程在onCreate()方法中创建并被赋予一个新创建的处理程序。处理加载活动线程的最佳做法

但是,当活动被销毁并重新启动时会发生什么,例如由方向改变?恕我直言,onCreate()方法将创建一个新的工作线程,而第一个工作线程仍在加载,所以现在我有多个工作线程执行相同的操作。

什么是防止这种情况并通知工作者线程有关新活动(以便它可以发布其状态更新)的最佳方法。

+0

不说这是最好的,但它可以调用onPause中的取消 - >保护无效onPause(){ super.onPause(); if(asynch!= null){asynch.cancel(true);} } – JAL 2011-05-02 18:15:08

回答

0

你绑定了DroidFu库吗?它有一个名为BetterAsyncTask的类,它似乎旨在摆脱你所说的问题。你可以在这里找到这个库(https://github.com/kaeppler/droid-fu)和一篇关于你的问题和droidfu的文章(http://brainflush.wordpress.com/2009/11/16/introducing-droid-fu-for-android-betteractivity-betterservice-and-betterasynctask/ - 请参阅“That Dratted AsyncTask”部分)。

+0

感谢您的信息。虽然我没有使用库本身,但改编了一部分代码。 – 2011-05-03 12:50:04