活动已泄露
我有一个用于将视频上传到服务器的活动。在此活动中,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显示代码 –