假设我有一个内部类扩展asynctask,名为A,外部类扩展了Activity B. A中的代码访问或修改活动B中的实例变量是否是线程安全的吗?
答案 0 :(得分:1)
如果您在没有synchronize
的情况下直接访问实例,那么不,代码不线程安全。
您必须使用synchronize
,或者只是从onPublishProggress()
的{{1}}方法访问该实例。
答案 1 :(得分:1)
不,an AsyncTask runs in a separate thread因此,当AsyncTask正在运行时,如果Activity和AsyncTask共享状态(在本例中为实例变量),则必须执行通常的线程同步。
通常,为了简化操作,您可以实现onPublishProgress()
和onPostExecute()
将状态从AsyncTask发布到Activity,因为这两个方法都是在UI线程中运行的。