更多线程和方向会改变问题

时间:2010-06-10 22:49:59

标签: android

当谈到线程和方向的变化时,看起来正常的事情是这样的:

public class Bwent extends Activity {
    private static Bwent instance;

    @Override
    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);

        instance = this;
    }

    //...

这样,如果您正在使用某个帖子发出网络请求,并且有人更改了电话的方向,则该线程将知道使用新的活动。

但是,在Android破坏旧活动并创建新活动时,线程是否可以完成?

在线程仍然可能指向错误的Activity或部分销毁的活动的过程中是否有片刻?

似乎应该没有,但即使使用在主线程中创建的Handler,我也会遇到线程试图更新不再存在的对象的间歇性问题。这种情况很少见,但确实发生了。

1 个答案:

答案 0 :(得分:1)

  

说到线程和   方向改变,似乎是   正常的事情是这样的   这样:

这是一件事。我不确定这是否是“正常”的事情。我怀疑这是最好的事情。

  

然而,是否有可能   线程可以在此期间完成   Android正在摧毁旧的Activity   并创建一个新的?

是。您的代码中没有任何内容阻止它。

  

在这个过程中是否有一个时刻   线程仍然可能指向   错误的活动,或部分活动   被破坏的活动?

是。您的代码中没有任何内容阻止它。

相反,请尝试the pattern that I illustrate here。使用AsyncTask,实现为静态内部类或公共类。是否知道活动的人。它只使用doPostExecute()中的活动(或可能onPublishProgress())。从AsyncTaskHandler的工作方式来看,我们的理解是AsyncTask在主线程方法中总是会有Activity

其中一些内容was discussed recently