2017-07-17 111 views
0

我有一個用於將視頻上傳到服務器的活動。在此活動中,ProgressDialog已被用於使其更直觀。錯誤說這個問題在ProgressDialog中。但是,當從不同的活動集達到此活動時,文件即將上載並達到所需的結果,但有一個活動正在產生此「內存泄漏異常」。活動已泄露

注意:我已確保視頻暫停,就像它在另一個stackoverflow鏈接中引用的一樣 我確保在新活動打開之前關閉所有對話框。

我的問題是什麼可能是這種錯誤的起源,它在某些情況下工作,但不適用於其他情況。

+0

你能後的代碼? –

+0

android.view.WindowLeaked:活動com.gurung.dila.videoeditor.EarningVideoActivity泄露 –

+0

@DilaGurung顯示代碼 –

回答

1

將您的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(); 
    } 
} 
+0

是的是的,,,你是男人...... @ Enamul Haque –

1

主要的原因是,你的代碼創建多次,但 不破壞包含根或 支配對象可以防止下級對象被 垃圾收集.Continually增長的對象樹對象類型。這個問題是內存泄漏的常見原因。

在你的情況,請確保您dismiss()DIALOG打開任何行動。我之前猜你PROGRESS-DIALOG運行這就是爲什麼問題來了。

當你開始縮小內存問題,你也應該使用 Allocation Tracker以更好地瞭解您的 內存佔用的對象分配的。

+1

具體來說,我在活動A中修剪了一些視頻,一旦修剪完畢,視頻路徑和名稱就會在另一個活動中傳遞,即活動B用於將提供的視頻上傳到服務器。它在這種情況下工作。但是當視頻的起源是活動C時,內存在開始上傳視頻後有時會泄漏。我已確保所有彈出和進度對話框在進行新活動之前都已關閉。如果我要調用GARBAGE COLLECTOR以獲取補救措施? –

+0

@DilaGurung在進行新的活動前關閉進度對話框請調試並確認。 –

+0

是的,我已經確保它。我已確保在進行新活動之前關閉所有內容 –

0
public void onDestroy(){ 
super.onDestroy(); 
if (progressDialog!=null && progressDialog.isShowing()){ 
    progressDialog.cancel(); 
} 
} 

public void onPause(){ 
super.onPause(); 
if (progressDialog!=null && progressDialog.isShowing()){ 
    progressDialog.cancel(); 
} 
} 
相關問題