1. 程式人生 > >Activity被回收導致被繫結Fragment呼叫getActivity()拋空指標異常

Activity被回收導致被繫結Fragment呼叫getActivity()拋空指標異常

當系統記憶體不足,Fragment的宿主Activity被回收的時候,Fragment的例項並沒有隨之被回收。Activity被系統回收時,會主動呼叫onSaveInstance()方法來儲存檢視層(View Hierarchy),所以當Activity再次被重建時,之前被例項化過的Fragment依然存在,而Activity又會建立新的Fragment,綜上這些因素導致了多個Fragment重疊在一起。而當之前已經被例項化的Fragment呼叫getActivity()時就會丟擲空指標異常。

解決辦法:

重寫Activity類中的onSaveInstance()方法,將“super.onSaveInstanceState(outState);”註釋掉,讓其不再儲存Fragment的狀態,達到其隨著繫結Activity一起被回收

的效果。