我有一個用於將視頻上傳到服務器的活動。在此活動中,ProgressDialog已被用於使其更直觀。錯誤說這個問題在ProgressDialog中。但是,當從不同的活動集達到此活動時,文件即將上載並達到所需的結果,但有一個活動正在產生此「內存泄漏異常」。活動已泄露
注意:我已確保視頻暫停,就像它在另一個stackoverflow鏈接中引用的一樣 我確保在新活動打開之前關閉所有對話框。
我的問題是什麼可能是這種錯誤的起源,它在某些情況下工作,但不適用於其他情況。
我有一個用於將視頻上傳到服務器的活動。在此活動中,ProgressDialog已被用於使其更直觀。錯誤說這個問題在ProgressDialog中。但是,當從不同的活動集達到此活動時,文件即將上載並達到所需的結果,但有一個活動正在產生此「內存泄漏異常」。活動已泄露
注意:我已確保視頻暫停,就像它在另一個stackoverflow鏈接中引用的一樣 我確保在新活動打開之前關閉所有對話框。
我的問題是什麼可能是這種錯誤的起源,它在某些情況下工作,但不適用於其他情況。
將您的ProgressDialog聲明爲類變量。
public class DemoActivity extends AppCompatActivity {
ProgressDialog progressDialog;
//.......
}
在onCreate方法中初始化它。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_demo);
progressDialog = new ProgressDialog(DashboardWithDrw.this);
progressDialog.setMessage("Loading...");
/........
}
,並關閉它在onPause()
@Override
protected void onPause() {
super.onPause();
if(progressDialog!=null){
progressDialog.cancel();
}
}
是的是的,,,你是男人...... @ Enamul Haque –
主要的原因是,你的代碼創建多次,但 不破壞包含根或 支配對象可以防止下級對象被 垃圾收集.Continually增長的對象樹對象類型。這個問題是內存泄漏的常見原因。
在你的情況,請確保您dismiss()
您DIALOG
打開任何行動。我之前猜你PROGRESS-DIALOG
運行這就是爲什麼問題來了。
當你開始縮小內存問題,你也應該使用 Allocation Tracker以更好地瞭解您的 內存佔用的對象分配的。
具體來說,我在活動A中修剪了一些視頻,一旦修剪完畢,視頻路徑和名稱就會在另一個活動中傳遞,即活動B用於將提供的視頻上傳到服務器。它在這種情況下工作。但是當視頻的起源是活動C時,內存在開始上傳視頻後有時會泄漏。我已確保所有彈出和進度對話框在進行新活動之前都已關閉。如果我要調用GARBAGE COLLECTOR以獲取補救措施? –
@DilaGurung在進行新的活動前關閉進度對話框請調試並確認。 –
是的,我已經確保它。我已確保在進行新活動之前關閉所有內容 –
public void onDestroy(){
super.onDestroy();
if (progressDialog!=null && progressDialog.isShowing()){
progressDialog.cancel();
}
}
public void onPause(){
super.onPause();
if (progressDialog!=null && progressDialog.isShowing()){
progressDialog.cancel();
}
}
你能後的代碼? –
android.view.WindowLeaked:活動com.gurung.dila.videoeditor.EarningVideoActivity泄露 –
@DilaGurung顯示代碼 –