2012-01-16 83 views

回答

8

一般來說,沒有。如果活動正在進行配置更改並被銷燬並重新創建,則後臺線程將與錯誤的實例進行交談,這可能會給您帶來問題。

理想情況下,AsyncTaskdoInBackground()應該能夠獨立於其啓動組件(活動,服務等)運行。我建議你在AsyncTask上創建一個構造函數,並傳入任何需要的內容。或者,AsyncTask由動態片段管理,該片段使用setRetainInstance(),在這種情況下(AFAIK),訪問片段的私有數據成員應該是安全的,因爲片段不會在任何地方發生。

+0

非常好的一點,這讓我想(可能會導致一些重構在我的項目中...) – Guillaume 2012-01-16 18:14:23

+0

@CommonsWare因此它可能會導致問題,但這些不是由於線程,特別是內存一致性錯誤。是對的嗎? – 2012-01-16 18:24:22

+0

@ Julian:那麼,內存一致性錯誤*是由於線程引起的。 – CommonsWare 2012-01-16 18:31:33

0

當內部類訪問封閉類的私有成員(字段或函數)時,編譯器會爲這些成員生成訪問函數。這將打破封裝,有人認爲這是一件好事或壞事。