我有一个用于将视频上传到服务器的活动。在此活动中,ProgressDialog已被用于使其更直观。该错误表明问题在ProgressDialog中。但是当从不同的活动集中达到此活动时,文件将被上传并且满足所需的结果,但是有一个活动正在产生这个“内存泄漏异常”。
注意:我确保视频暂停,就像在stackoverflow的另一个链接中引用的那样 我确保在打开新活动之前关闭所有对话框。
我的问题是这种错误的起源可能是什么,它适用于某些情况但不适用于其他情况。
答案 0 :(得分:1)
主要原因是您的代码多次创建的对象类型 不破坏。持续生长包含root或者的对象树 支配对象可以防止从属对象存在 垃圾回收。此问题是内存泄漏的常见原因。
在您的情况下,请确保在开启任何操作之前 dismiss()
DIALOG
。我猜你的 {{1}运行那就是为什么会出现问题。
当你开始缩小内存问题时,你也应该使用 Allocation Tracker ,以便更好地了解您的位置 占用内存占用的对象。
答案 1 :(得分:1)
将ProgressDialog声明为类变量。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_demo);
progressDialog = new ProgressDialog(DashboardWithDrw.this);
progressDialog.setMessage("Loading...");
/........
}
在onCreate方法中初始化它。
onPause()
并在@Override
protected void onPause() {
super.onPause();
if(progressDialog!=null){
progressDialog.cancel();
}
}
string[,] input_data = new string[5,12];
var column1 = input_data.GetLength(0);
var column2 = input_data.GetLength(1);
答案 2 :(得分: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();
}
}