Articles of 内存泄漏

将活动的引用传递给实用程序类android

我意识到这个问题已经被问了很多次了,但我仍然无法完全理解这个概念。 在我的应用程序中,我正在使用一个静态工具类来保持常见的方法(如显示错误对话框) 这是我的静态类如何看起来像: public class GlobalMethods { //To show error messages public static final void showSimpleAlertDialog(final Activity activity, String message, final boolean shouldFinishActivity) { if (!activity.isFinishing()) { AlertDialog.Builder builder = new AlertDialog.Builder(activity, AlertDialog.THEME_HOLO_DARK); builder.setCancelable(true).setMessage("\n" + message + "\n").setNeutralButton(activity.getResources().getString(R.string.label_ok), new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub dialog.cancel(); […]

Android Drawable内存泄漏

我使用了几个大的drawable,我不知道如何pipe理内存泄漏。 我跟踪了我的应用程序的堆大小,它不停止增长(作为分配的内存)。 特别是长大不变的“字节数组(byte [])”types。 (在Eclipse的DDMS堆视图中) 我的应用程序由一个使用片段的活动组成。 那些碎片显示了几个大的图像。 我试图将drawablescallback设置为null,将drawables设置为null,当我popup一个片段但堆不会减less时清除我的易失性caching(这会阻止我的应用程序执行太多的磁盘IO操作)。 其实我每次调用:Drawable.createFromResourceStream(context.getResources(),value,new FileInputStream(f),f.getName(),opts); 堆长大了。 我怎样才能释放记忆? 谢谢 !

Kotlin:安全的lambdas(没有内存泄漏)?

在阅读了关于内存泄漏的这篇文章之后,我想知道在Kotlin Android项目中使用lambdas是否安全。 确实,lambda语法使得我的程序更加轻松,但是内存泄漏呢? 作为一个有问题的例子,我从我的一个项目中取得了一段代码,在那里构build了一个AlertDialog。 这段代码在我的项目的MainActivity类中。 fun deleteItemOnConfirmation(id: Long) : Unit { val item = explorerAdapter.getItemAt(id.toInt()) val stringId = if (item.isDirectory) R.string.about_to_delete_folder else R.string.about_to_delete_file val dialog = AlertDialog.Builder(this). setMessage(String.format(getString(stringId), item.name)).setPositiveButton( R.string.ok, {dialog: DialogInterface, id: Int -> val success = if (item.isDirectory) ExplorerFileManager.deleteFolderRecursively(item.name) else ExplorerFileManager.deleteFile(item.name) if (success) { explorerAdapter.deleteItem(item) explorerRecyclerView.invalidate() } else Toast.makeText(this@MainActivity, R.string.file_deletion_error, Toast.LENGTH_SHORT).show() }).setNegativeButton( R.string.cancel, […]

在Eclipse MAT中,美元在一个类的最后签名是什么意思?

我正在使用Eclipse MAT来尝试跟踪Android中的资源泄漏(如果您更改了屏幕方向),当我进入直方图视图时,我会看到列出的活动与同一活动一起列出,之后。 如此: com.test.TestActivity com.test.TestActivity$1 com.test.TestActivity$2 com.test.TestActivity$3 只是想知道$ 1,$ 2和$ 3是什么意思… TIA。

SharedElement和自定义EnterTransition导致内存泄漏

有一个共享元素animation,还有一个自定义inputanimation导致活动泄漏。 任何想法可能是什么原因? 09-21 16:19:31.007 28269-31066/com.sample.android D/LeakCanary﹕ * com.feeln.android.activity.MovieDetailActivity has leaked: 09-21 16:19:31.007 28269-31066/com.sample.android D/LeakCanary﹕ * GC ROOT android.app.ActivityThread$ApplicationThread.this$0 09-21 16:19:31.007 28269-31066/com.sample.android D/LeakCanary﹕ * references android.app.ActivityThread.mActivities 09-21 16:19:31.007 28269-31066/com.sample.android D/LeakCanary﹕ * references android.util.ArrayMap.mArray 09-21 16:19:31.007 28269-31066/com.sample.android D/LeakCanary﹕ * references array java.lang.Object[].[1] 09-21 16:19:31.007 28269-31066/com.sample.android D/LeakCanary﹕ * references android.app.ActivityThread$ActivityClientRecord.activity 09-21 16:19:31.007 28269-31066/com.sample.android D/LeakCanary﹕ * references com.feeln.android.activity.MovieDetailActivity.mActivityTransitionState 09-21 […]

添加到AnimationDrawable以编程方式泄漏内存的图像

我有一个Android应用程序与大量的animation。 当我以编程方式创buildanimation(使用AnimationDrawable )时, 非Java对象 (如出现在DDMS堆选项卡中)随着我加载的每个新animation而增长,即使在我的animation发布后也不会缩回。 我只有一个从我写的包装对象的每个AnimationDrawable对象的引用,我validation了这个对象获取通过重写finalize方法,并确保它被调用释放。 最终,android会停止加载图像,并将“内存不足”错误打印到日志中。 有趣的是,这只发生在一些设备(摩托罗拉Xoom,索尼Experia),而不是在其他人(如Galaxy S)。 这个问题不是特定的蜂窝或蜂窝前蜂窝,你可以从我给出的设备示例中看到。 我尝试过的一些事情: 在完成当前animation之后调用每个帧的回收,但似乎没有帮助。 为AnimationDrawble对象分配null 确保没有与持有引用animation可绘制的类相关的静态variables 确保问题消失后,我注释掉myAnimation.addFrame(…)

WebView中的video – ApplicationContext与活动上下文

我在WebView播放video。 如果要避免内存泄漏,则必须使用ApplicationContext (与Activity上下文相对)来实例化WebView ( 请参阅此 ) 如果我通过ApplicationContext和VideoView内的video需要创build一个对话框(通常为'不能播放这个video'),我得到一个BadTokenException ( 请参阅此 ) 我们是否期望在内存泄漏或潜在的ANR之间做出决定?

内存不足内存泄漏问题

大家好,我正在开发一个应用程序,它使用了许多图像和activities.Its一个数字杂志提供应用程序。在我的应用程序的一个情况来应该显示所有杂志的用户使用缩略图使用Viewgroup的图像和TextViewdynamic。我的应用程序差不多完成了。但是我真的在努力解决记忆问题。 在我的应用程序中,许多内存泄漏即将到来。我在许多可以使用System.gc()定位的地方进行pipe理。 。回收(); hashmap和所有其他可能的方式。但是我的应用程序仍然有同样的问题。 我想find这个内存泄漏发生在我的code.I使用DDMS分配跟踪,MAT和堆仍然只是一个粗略的想法。我想find它在我的代码来pipe理它。 任何人都可以帮助我解决这个问题。我卡在这里,我没有办法。

查看片段android中的重用

我试图保存我的视图状态在我的片段,但我担心我泄漏我的活动。 这是我在做什么: @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle state){ if(mView != null){ View oldParent = mView.getParent(); if(oldParent != container){ ((ViewGroup)oldParent).removeView(mView); } return mView; } else{ mView = inflater.inflate(R.id.fragview, null) return mView; } } 我很担心,因为我知道所有的视图保持一个上下文,我不知道是否是从充气器膨胀的活动上下文或应用程序上下文。 也许用实际的方式创build视图并使用getActivity()。getApplication()而不是使用inflater来设置它的属性会更好。 我将不胜感激这方面的任何反馈。 谢谢! 编辑:确认活动泄漏,虽然这个代码很好,不要这样做:*(

Android Surfaceview线程和内存泄漏

我在Android中创build一个游戏,我注意到游戏有一个内存泄漏。 IV设法隔离内存泄漏到一个较小的应用程序,以便我可以看到很好的尝试和解决,如何解决它。 应用程序为其视图使用曲面视图,并将线程附加到该视图上,以便将所有绘图执行到屏幕上。 内存泄漏发生在我开始一个新的活动,并closures一个即时通讯使用。 我可以看到这一点,当我做我的testing应用程序的内存转储,因为它只是打开和closures一个活动(活动a – >活动b – >活动a)。 Iv种类的想法,我怎么可以解决这个问题,作为四尝试null我所有的引用,我创build视图(内线程),四尝试删除从SurfaceView的callback,当我摧毁了视图,也在活动内部,似乎没有任何区别。 MemoryLeakActivity.java package memory.leak; import memory.leak.view.MemoryLeak; import android.app.Activity; import android.os.Bundle; public class MemoryLeakActivity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(new MemoryLeak(this)); } } MemoryLeakViewThread.java package memory.leak.thread; import memory.leak.view.MemoryLeak; import android.view.SurfaceHolder; import android.graphics.Canvas; public […]