Java 的垃圾回收機制(GC)會自動管理記憶體。當 DialogFragment 被 dismiss 且沒有其他強引用指向它時,它就符合回收條件。但需注意:
onDismiss() 或 onDestroyView() 中清理引用,或使用 WeakReference。若 DAO 持有 Activity 的強引用作為 Context:
IllegalStateException)。// 在 Activity 中
private WeakReference dialogRef;
public void showDialog() {
MyDialogFragment fragment = new MyDialogFragment();
dialogRef = new WeakReference<>(fragment);
fragment.show(getSupportFragmentManager(), "tag");
}
@Override
protected void onDestroy() {
super.onDestroy();
if (dialogRef != null) dialogRef.clear();
}
dao.setContext(getApplicationContext()),生命週期隨應用程式,不會隨 Activity 銷毀。onDestroy() 中呼叫 DAO 的取消方法(如 RxJava dispose()、Kotlin Coroutine job.cancel())。依賴 Java GC 不等於不用管理引用。正確處理 Context 生命週期、避免強引用持有短命元件,是 Android 開發避免記憶體洩漏與崩潰的關鍵。