访问或修改AsyncTask中的实例变量

时间:2012-02-04 08:53:32

标签: android thread-safety android-asynctask

假设我有一个内部类扩展asynctask,名为A,外部类扩展了Activity B. A中的代码访问或修改活动B中的实例变量是否是线程安全的吗?

2 个答案:

答案 0 :(得分:1)

如果您在没有synchronize的情况下直接访问实例,那么不,代码线程安全。 您必须使用synchronize,或者只是从onPublishProggress()的{​​{1}}方法访问该实例。

答案 1 :(得分:1)

不,an AsyncTask runs in a separate thread因此,当AsyncTask正在运行时,如果Activity和AsyncTask共享状态(在本例中为实例变量),则必须执行通常的线程同步。

通常,为了简化操作,您可以实现onPublishProgress()onPostExecute()将状态从AsyncTask发布到Activity,因为这两个方法都是在UI线程中运行的。