问题标签 [android-memory]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - 避免对活动的长期引用
我有一个Activity
. 这Activity
有ListView
一个BaseAdapter
附加的。在onDestroy
中,适配器被存储在一个类中,在onCreate
它被重新附加到新的Activity
. 适配器从 Internet 加载内容并Views
为ListView
. 为了能够AsyncTask
从适配器启动(加载我的数据),它需要一个LoaderManager
. 我Activity
用getSupportLoaderManager()
我的Activity
.
以下是否正确:当适配器被保留并重新附加到
Activities
时,它将始终持有对Activity
我第一次传递给它的旧的、早已不复存在的引用,这可能/将导致内存泄漏?我怎样才能防止这种情况?
LoaderManager
每次将适配器重新连接到新Activity
适配器时,我都考虑过更换适配器Activity
?getSupportLoaderManager()
这是安全/常见的吗?我一般如何才能找到对“旧”的可能危险的引用
Activities
?
android-listview - listview ImageView 性能慢
我有一个通过拍照填充的 ListView。每次我拍照时,照片都会作为 ImageView 条目添加到列表视图中,以及日期等。拍摄照片时,Uri 会保存到内存中的数组列表中,当显示列表视图时,它会加载将 arraylist uris 中的行的图像转换为位图(按比例缩小),然后转换为图像视图的可绘制对象。一切正常,但是,当列表视图变长时,它会变得非常慢,有时我会因字节分配错误而内存不足。
这是我在自己的自定义适配器中填充列表视图的视图:
android - 使用 AccessibilityManager 寻找 Android Activity 泄漏的解决方案
我注意到仅在 GT-N8000 和 GT-N7000 系列安卓设备上出现的内存泄漏。在这样做的设备中,它会泄漏应用程序中的所有活动。
这似乎与我的代码无关,我无法破译它。
任何想法?
示例:这里是 GC 的路径,它阻止活动进行垃圾收集。活动已经结束。(通过 Eclipse 内存分析器查看)。
android - 在Android中逐帧动画图像的最佳方法
我有 3 组 50 张图像,我必须在 Android 应用程序中为每组图像创建动画。我可以创建一个简单的应用程序,使用以下方法为第一组 50 个图像设置动画,
在 drawable 文件夹中添加了 Animation-list xml 并使用 frameAnimation.start() 调用它。
在我在清单文件中保留以下“android:largeHeap="true" 之前,此方法不起作用。
我不确定这是否是动画图像的好方法(如果我们有更多的图像并且每个图像的大小更大,例如 60 KB。图像是 JPG 格式)与否
我浏览并发现,如果我们能够清除内存并且能够在内存中保持较少数量的图像,那么我们的应用程序将运行得很好。所以我想知道如何清除内存?
请让我知道我是否需要按照我上面解释的以外的其他方法为图像设置动画,以便我可以清除内存。
谢谢你的帮助。
android - 模拟器上的内存不足错误,甚至没有在android的片段中使用图像
我有一个具有不同片段的应用程序,在一个片段中,我有大量数据。它第一次运行得很好,但是当我第二次进入那个片段时,就会出现“内存不足错误”。几天前它工作得非常好,但突然间我遇到了这个问题。
android - 使用 MAT 跟踪 android 内存使用情况
我正在尝试找出我的应用程序的一些内存使用来自使用 MAT 的位置。
有一些对位图的引用似乎保留了很多堆。有什么方法可以确定它们是什么实际资源?图像通常来自应用程序内的可绘制对象。有对象引用,但我不知道如何深入确定哪些实际可绘制对象可能占用内存。
例如,有一个位图,其保留堆超过 1mb,很多超过 300k
android - gridadapter中的内存泄漏找不到哪里?以及如何改进我的逻辑以避免 GC 调用?
我如何改进我的逻辑以减少内存消耗和快速 UI,因为它在滚动时由于 GC 调用而滞后。
我使用 Eclipse MAT 发现了 3 个嫌疑人:
问题嫌疑人1
“”加载的一个“android.graphics.Bitmap”实例占用500,464(14.70%)字节。内存在“”加载的“byte[]”的一个实例中累积。
问题嫌疑人2
2906个“java.lang.Class”实例,由“”加载,占用1121048(32.92%)字节。
最大实例:
问题嫌疑人3
8,040 个“java.lang.String”实例,由“”加载,占用 514,408 (15.11%) 个字节。
我的适配器代码
日志猫
谢谢你的时间...
android - Debug.getNativeHeapFreeSize 的真正含义是什么
我使用以下代码在我的应用程序中转储内存使用情况:
我在两个不同的设备 Nexus(2011 型号)和 Galaxy Note 1 上运行它。Galaxy Note 存在内存问题,并且在我添加 1-2 个位图后经常因内存问题而失败。
这是转储:
Nexus:
Galaxy Note:
请注意,Debug.getNativeHeapFreeSize() 调用在 nexus 上返回 1377480.000000,在 Galaxy 上仅返回 155648.000000。这怎么可能。这个电话的真正含义是什么?我在全新的应用程序安装上进行了两项测试,应用程序没有完成任何工作 - 只是呈现第一个屏幕,几乎没有几个 TextViews 和按钮。Galaxy Note 1 的内存等级为 64MB,所以我认为我没有达到这个限制。即使我在屏幕上添加了许多位图,Nexus 上也没有内存问题,所以我认为我没有使用太多内存。
android - Android在片段中泄漏窗口
我知道这是一个重复的问题,但我无法在片段中解决我的问题。在第一个片段中,我有一个带有 ProgressDialog 的 AsyncTask 并将其重定向到第二个片段,在第二个片段中,我按下设备后退按钮,我在第一个片段中得到泄漏的窗口异常。
我花了更多时间,但我无法得到解决方案。如何解决这个问题?请帮我。
这是我的第一个(MyAccount_MySpot)片段代码:
完整的日志代码:
android-asynctask - Android 上下文弱参考
在我的一些应用程序中,我使用一些单例对象作为“管理器”。我将它们实例化Application.onCreate
并传递给它们ApplicationContext
,我将其存储在WeakReference
.
一些“经理的”方法在从 an 调用后启动后台任务Activity
,因此我将Activity
's传递context
给该方法,并将 a 保留给该方法WeakReference
(并在 an 内部使用它AsyncTask
)。该引用将一直保留到下一次 anActivity
调用进入后台的方法时,此时将WeakReference
设置为 new Activity
。context
我的问题是,是否ApplicationContext
必须保留在 a中,保留's这样WeakReference
有什么问题吗?Activity
context