2012-09-10 177 views
0

我試圖把一些時間消耗數據庫操作到後臺線程與AsyncTask幫助後更新SQLiteOpenHelper的上下文屬性。爲了處理可能的設備旋轉,我將我的AsyncTask實例保存在onRetainNonConfigurationInstance()中,並在onCreate()中重新使用它們。到目前爲止這麼好......安卓設備旋轉

但是由於活動是在設備輪換後重新創建的,我必須將我的AsyncTask中的所有Activity引用更新爲新創建的引用。問題是,AsyncTask裏面的SQLiteOpenHelper也有一個上下文實例,它是通過它的構造函數傳遞的,而我剛剛通過舊的Activity實例,現在我怎樣才能將它更新到新的Activity

我已經測試過,好像工作,即使我不更新的SQLiteOpenHelper上下文。但我仍然不確定是否可以。

感謝

回答

1

,當你這樣做你是一個漏水情況Activity,因爲垃圾收集器不能釋放它。根據您的應用程序,這可能會或可能不會致命,但在任何情況下都不好。

您應該爲您的數據庫使用應用程序Context或創建一個ContentProvider,該應用程序有其自己的上下文可供使用。

1

你還是使用應用程序上下文(getApplicationContext()),而不是一個活動(this)。如果您使用的活動場景您泄漏是