Activity 已泄露
Activity has leaked
我有一个 activity 用于将视频上传到服务器。在此 activity ProgressDialog 已被使用,使其更加直观。该错误表明问题出在 ProgressDialog 中。但是当这个 activity 从不同的一组 activity 到达时,文件正在上传并且满足了预期的结果但是有一个 Activity,它正在产生这个 "Memory Leaked exception"。
注意:我已确保视频已暂停,就像在 Whosebug 的另一个 link 中引用的那样
我确保在打开新 activity 之前关闭所有对话框。
我的问题是这种错误的来源可能是什么,它在某些情况下有效但在其他情况下无效。
Main reason is object type that your code creates multiple times but
doesn’t destroy .Continually growing object trees that contain root or
dominator objects can prevent subordinate objects from being
garbage-collected. This issue is a common cause of memory leaks .
在你的情况下,确保你 dismiss()
你的 DIALOG
在打开任何操作之前。我想你的 PROGRESS-DIALOG
运行 这就是问题来的原因。
As you start narrowing down memory issues, you should also use the
Allocation Tracker to get a better understanding of where your
memory-hogging objects are allocated .
将您的 ProgressDialog 声明为 class 变量。
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();
}
}
public void onDestroy(){
super.onDestroy();
if ( progressDialog!=null && progressDialog.isShowing() ){
progressDialog.cancel();
}
}
public void onPause(){
super.onPause();
if ( progressDialog!=null && progressDialog.isShowing() ){
progressDialog.cancel();
}
}
我有一个 activity 用于将视频上传到服务器。在此 activity ProgressDialog 已被使用,使其更加直观。该错误表明问题出在 ProgressDialog 中。但是当这个 activity 从不同的一组 activity 到达时,文件正在上传并且满足了预期的结果但是有一个 Activity,它正在产生这个 "Memory Leaked exception"。
注意:我已确保视频已暂停,就像在 Whosebug 的另一个 link 中引用的那样 我确保在打开新 activity 之前关闭所有对话框。
我的问题是这种错误的来源可能是什么,它在某些情况下有效但在其他情况下无效。
Main reason is object type that your code creates multiple times but doesn’t destroy .Continually growing object trees that contain root or dominator objects can prevent subordinate objects from being garbage-collected. This issue is a common cause of memory leaks .
在你的情况下,确保你 dismiss()
你的 DIALOG
在打开任何操作之前。我想你的 PROGRESS-DIALOG
运行 这就是问题来的原因。
As you start narrowing down memory issues, you should also use the Allocation Tracker to get a better understanding of where your memory-hogging objects are allocated .
将您的 ProgressDialog 声明为 class 变量。
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();
}
}
public void onDestroy(){
super.onDestroy();
if ( progressDialog!=null && progressDialog.isShowing() ){
progressDialog.cancel();
}
}
public void onPause(){
super.onPause();
if ( progressDialog!=null && progressDialog.isShowing() ){
progressDialog.cancel();
}
}