当谈到线程和方向的变化时,看起来正常的事情是这样的:
public class Bwent extends Activity {
private static Bwent instance;
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
instance = this;
}
//...
这样,如果您正在使用某个帖子发出网络请求,并且有人更改了电话的方向,则该线程将知道使用新的活动。
但是,在Android破坏旧活动并创建新活动时,线程是否可以完成?
在线程仍然可能指向错误的Activity或部分销毁的活动的过程中是否有片刻?
似乎应该没有,但即使使用在主线程中创建的Handler,我也会遇到线程试图更新不再存在的对象的间歇性问题。这种情况很少见,但确实发生了。
答案 0 :(得分:1)
说到线程和 方向改变,似乎是 正常的事情是这样的 这样:
这是一件事。我不确定这是否是“正常”的事情。我怀疑这是最好的事情。
然而,是否有可能 线程可以在此期间完成 Android正在摧毁旧的Activity 并创建一个新的?
是。您的代码中没有任何内容阻止它。
在这个过程中是否有一个时刻 线程仍然可能指向 错误的活动,或部分活动 被破坏的活动?
是。您的代码中没有任何内容阻止它。
相反,请尝试the pattern that I illustrate here。使用AsyncTask
,实现为静态内部类或公共类。是否知道活动的人。它只使用doPostExecute()
中的活动(或可能onPublishProgress()
)。从AsyncTask
和Handler
的工作方式来看,我们的理解是AsyncTask
在主线程方法中总是会有Activity
。
其中一些内容was discussed recently。