gpt4 book ai didi

java - Android 中的内存管理

转载 作者:行者123 更新时间:2023-12-01 16:35:11 25 4
gpt4 key购买 nike

因此,我第一次使用 Monkey 测试来测试我的游戏。我设法在大约 3 分钟内没有发生崩溃,但最终因内存不足错误而崩溃,我正在尝试找出如何改进的方法。

我的程序结构如下:

  • 有一个前屏幕将启动一项 Activity 。
  • 次要 Activity 是大部分操作所在,也是我崩溃的地方。
  • 我因 inflate 命令而崩溃
  • 我的游戏强制采用纵向模式,制作 1 个布局比制作 2 个作品更容易...
  • 有许多与我的次要 Activity 相关的类变量。我将在下面包括非静态的。我还为那些不太明显的事物提供了某种线索。

我想知道的是如何改进程序的内存管理,使其不会崩溃。我怀疑我需要手动删除其中一些变量,但我不确定这样做的正确位置是什么。谢谢!

private Level_Score_bar score_bar; // Custom view
private number_viewer num_viewer; // Custom view
private number_pad num_pad; // Custom View
private int time,score,level,num_remaining,current_var,change_loc,time_remaining;
private ArrayList<Integer> the_key;
private ImageView Number_to_select;
private Boolean update_viewer;
Random rseed;
Vibrator bzzz;
long ctime;
private Activity self=this;

private SharedPreferences prefs;
private Editor prefs_edit;

发生内存不足

   setContentView(R.layout.level_layout);

这个布局相当复杂,包含多个 ImageView 、按钮、 TextView 等。

最佳答案

事实证明,我正处于堆的毛茸茸的边缘。我使用了相当多的图像,结果发现我超过了“正常”堆大小。我已经通过缩小一些图像来改善这种情况,但最好的解决方案是将我的 list 更改为以下内容:

<application 
android:label="@string/app_name"
android:icon="@drawable/logo"
android:screenOrientation="portrait"
android:largeHeap="true">

大堆将允许我进行 future 的升级(其中将包括关卡设计等,这将占用相当多的空间......)总而言之,这应该是一个非常小的影响。

我选择了 @Booger 的答案,因为这是让我可以进行一些研究并发现我的堆空间不够大的部分,但我还包含了 @Ramam-Mystry 的代码段。

我还使用了此 excellent question 中的许多答案在我的追求中。我开始存储引用而不是位图以及其他一些相关位。总而言之,我的内存消耗下降了 25%,并且持续改善。

另一个技巧可能是在 Activity 中使用 onLowMemory() 函数,然后修剪不需要的内存。

关于java - Android 中的内存管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9926092/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com