在Xamarin.Android中使用图像资源的正确方法?

在Xamarin.Android中使用图像资源的正确方法?,android,performance,xamarin,memory-management,out-of-memory,Android,Performance,Xamarin,Memory Management,Out Of Memory,目前,我正在使用以下方法为AXML中的按钮/backgrounds/textboxs/etc设置背景: <ImageButton p1:id="@+id/physicsOption" p1:layout_column="0" p1:layout_columnSpan="1" p1:layout_columnWeight="1" p1:layout_row="0" p1:layout_rowSpan="1" p1:layout_rowW

目前,我正在使用以下方法为AXML中的按钮/backgrounds/textboxs/etc设置背景:

<ImageButton
    p1:id="@+id/physicsOption"
    p1:layout_column="0"
    p1:layout_columnSpan="1"
    p1:layout_columnWeight="1"
    p1:layout_row="0"
    p1:layout_rowSpan="1"
    p1:layout_rowWeight="1"
    p1:layout_height="50dp"
    p1:layout_width="50dp"
    p1:padding="10dp"
    p1:scaleType="fitXY"
    p1:background="@drawable/GreenButtonIcon"
    p1:src="@drawable/PhysicsIcon" />

比如说

正如您所看到的,我将图像保存在我的参考资料/绘图中。但当我启动我的应用程序时,我使用的是280Mb+的内存,每一个新的布局都会额外增加30-80Mb的内存。我知道我可以分配更多内存,但这不是正确的解决方案。那么,如何减少内存占用


谢谢你的建议。

我知道有十几种设置来源和背景的方法。但是有什么好方法可以减少我的内存占用呢?1)
…我知道我可以分配更多的内存…
,不,你不能。2) Drawables的大小应基于设备分辨率,请参见,因为图像的大小太大,所以应用程序会出现OOM,在应用程序加载图像之前,您需要调整图像大小以避免OOM,这是减少内存占用的正确方法,无法直接减少内存。如果调用
GC.Collect(),它也不能很好地工作,因为您使用的是C语言,内存管理的力量在于垃圾收集器,而不是应用程序开发人员。