我有一个超过600×800像素JPEG的画廊OutOfMemoryexception。 环境 我一直在用600×800像素的JPG图片来使用Gallery。 由于我的内容可能比图片稍微复杂一些,因此我将每个视图都设置为一个将ImageView换成JPG的RelativeLayout。 为了“加快”用户体验,我有一个简单的4槽高速caching(在循环中),左边1个图像和右边1个图像预取到显示的图像,并保留在4槽HashMap中。 该平台 我正在使用256 RAM和128堆大小的AVD,以及600×800的屏幕。 它也发生在Entourage Edge目标上,除了使用设备更难debugging。 问题 我已经得到一个例外: OutofMemoryError: bitmap size exceeds VM budget 当获取第五张图片时会发生这种情况。 我试图改变我的图像caching的大小,它仍然是一样的。 奇怪的事情:不应该有一个记忆问题 为了确保堆的限制与我所需要的距离相去甚远,我在开始时定义了一个虚拟的8MB数组,并将其保留为未引用状态,以便立即派发。 它是活动线程的成员,定义如下 static { @SuppressWarnings("unused") byte dummy[] = new byte[ 8*1024*1024 ]; } 结果是堆大小接近11MB,而且全部是免费的。 注意我开始崩溃后添加了这个技巧。 这使得OutOfMemory不那么频繁。 现在,我正在使用DDMS。 就在崩溃之前(在崩溃之后变化不大),DDMS显示: ID Heap Size Allocated Free %Used #Objects 1 11.195 MB 2.428 MB 8.767 MB 21.69% 47,156 […]
最近我看到可以通过使用WIFI而不是USBdebugging方法来debugging应用程序开发。 我做了一个search,我发现了一个名为abdWireless的应用程序,但是我遇到了问题。 如何告诉Eclipse通过Wifi方式连接? 我认为这是一个自动过程,但是在开始debugging时打开模拟器。 有人? :)再见
我现在将我的开发环境从Eclipse切换到Android Studio。 我真的很喜欢它的自动完成function和IDE提供的许多其他function。 不过,我在debugging时遇到一些问题。 我希望使用这个IDE提供的Monitor工具,自带的DDMS和非常漂亮的可视化界面来跟踪内存使用情况,线程状况等等。 但我找不到一种方法,这可以支持一步一步使用我必须创build的断点(在编辑器中的红点) 我只能通过不打开这个监视器一步一步的debugging。 因为当我在debugging器运行时试图使用Monitor时,它会popup一个窗口,要求我先断开ADB。 我也找不到从Monitor启动应用程序的地方。 在Android Studio中同时使用Monitor时,有没有办法一步步debugging?
我试图找出为什么我的应用程序使用这么多的内存。 我经常在15到18MB之间看到它,这比我想象的要高得多。 我通过DDMS看了一下堆的大小,看到这个: 这看起来有点可疑,因为我的应用程序根本不处理大的图像。 事实上,我的应用程序中可绘制的总和大约是250KB。 所以我创build了一个堆转储,并使用MAT来定位所有这些内存的去向。 byte []数组是迄今为止最大的消费者,所以我钻了下来,注意到以下几点: 我完全不知道为什么sPreloadedDrawables负责如此高的保留堆大小。 我也不知道如何识别根本原因,或者如何“修复”它。 我应该从哪里出发? 我的应用程序主要在后台通过服务,根本不处理图像数据。 我有活动,用户可以select使用,但他们再次使用小绘图,这不能解释这么大的堆大小。 我也检查了活动泄漏等任何讨厌的事件,但没有find任何。 编辑:我注意到,在模拟器中运行时堆大小大大降低。 这很混乱。 :/
有没有办法获得通过adb运行的当前活动的详细信息。
我正尝试在ADM中连接我的应用程序,但不幸的是层次结构视图不显示。 我应该如何将我的应用程序连接到ADM工具? 设备:Nexus 4 O:4.3.3 错误: [2014-02-06 13:00:14 – hierarchyviewer]Missing forwarded port for 021df5e049116bac [2014-02-06 13:00:14 – hierarchyviewer]Unable to get view server version from device 021df5e049116bac [2014-02-06 13:00:14 – hierarchyviewer]Missing forwarded port for 021df5e049116bac [2014-02-06 13:00:14 – hierarchyviewer]Unable to get view server protocol version from device 021df5e049116bac [2014-02-06 13:00:14 – ViewServerDevice]Unable to debug device: lge-nexus_4-021df5e049116bac
自从发布以来,我一直在使用Android Studio开发我的应用程序。 一切都很好,直到最近,我不得不一起debugging数据库文件。 由于我不知道如何直接查看数据库,所以当我debugging生成数据库文件时,我必须将数据库文件从手机导出到PC。 为了做到这一点,我必须打开DDMS > File Explorer 。 一旦我打开DDMS,我必须重新连接USB,我失去了我的debugging线程。 检查数据库文件后,必须closuresDDMS并重新连接USB才能返callback试模式。 这太复杂了。 有没有人有更好的方式在Android Studio中做到这一点(我知道在Eclipse中更容易)?