什麼是記憶體泄露? 什麼是記憶體泄露? 就是該回收的記憶體由於種種原因沒有被回收,還駐留在記憶體中。 記憶體泄露有什麼影響? 可能一處小小的記憶體泄露就會導致整個應用卡頓,甚至崩潰。 例子說明: 這段代碼可能會出現記憶體泄露。 為什麼說可能會造成記憶體泄露? 如果在Toast消失之前,Toast 持有了當前的 Ac ...
什麼是記憶體泄露?
就是該回收的記憶體由於種種原因沒有被回收,還駐留在記憶體中。
記憶體泄露有什麼影響?
可能一處小小的記憶體泄露就會導致整個應用卡頓,甚至崩潰。
例子說明:
Toast.makeText(MainActivity.this,"Hello",Toast.LENGTH_SHORT).show();
這段代碼可能會出現記憶體泄露。
為什麼說可能會造成記憶體泄露?
如果在Toast消失之前,Toast 持有了當前的 Activity,而此時,用戶點擊了返回鍵,導致 Activity 無法被 GC(Garbage Collection垃圾回收) 回收,這個Activity 就引起了記憶體泄露。
解決方法?
所有和當前 Activity 無關的 Context 都可以傳入,避免記憶體泄露的方法同樣使用其他需要傳入 Context 的地方。(這句話我表示理解不了)如下
Toast.makeText(getApplicationContext(),"Hello",Toast.LENGTH_SHORT).show();
getApplicationContext()是整個應用的上下文,不會持有某個 Activity 對象。
註意
dialog的上下文不能使用getApplicationContext(),程式會崩掉,dialog實例化必須持有 Activity對象。