品质管理 安卓游戏 DDMS 应用和生命周期

陈子昂 · 2016年08月05日 · 最后由 疯疯 回复于 2022年02月10日 · 2513 次阅读

闲置内存和运行内存占用尽量减少,参考同类竞争对手水平

  • 游戏行业认为 adb 是银弹的占比例不少,所以写了这个内容,其实应用很广泛,包含性能和兼容性自动化通用部分等等。本文,等你掌握了看闲置内存和运行内存呢的办法后,竞品测试也是一样的。

关于使用 DDMS

线上基本没有源码,借助 Android SDK 中的 DDMS 工具,DDMS 工具中 Traceview 的使用
点击"Tools"下拉选择"Android"-"Android Device Monitor",选择右上方 DDMS
如果找不到手机,在 dos 下输入

adb devices
出现List of devices attached(不显示设备)

先确保连线问题,手机驱动还是 usb 调式模式,如果还是不行,重连手机,重启 adb 进程如下:

adb kill-server  adb start-server

怕搞乱最好只链接 1 台手机。


查看闲置内存和运行内存

连接顺利后,先打开 android 的运行窗口,在上方可以查看内存和空闲内存

  • heapsize 当前内存堆
  • allocated 游戏 app 申请的内存
  • free 游戏 app 空闲内存
  • 上面 allocated+free = heapsize 和 pc windows Stand by + free = Available 一样。

继续操作你的游戏,关注 data object 注意 count 如果过大,记录下来,回头在 pc 版检查内存泄露

  • 1-byte array 代表图片大小

App 切换和周期

  • 如果遇到手机启动放置 2 个 app 在放置后台,当切换 appA 和 appB,从 A 切换到 B,cpu 在计算 appB,内存在进行缓存,会出现卡顿

先来讲讲切换的生命周期,了解 Android API 说明 Activity 继承了 ApplicationContext 这个类,范例如下:

public class Activity extends ApplicationContext {  
       protected void onCreate(Bundle savedInstanceState);  //savedInstanceState保存当时状态
       protected void onStart();     
       protected void onRestart();  
       protected void onResume();   //刷新
       protected void onPause();    
       protected void onStop();     
       protected void onDestroy();  //关闭程序
   }  


  • 我门先启动 appA,通过 Activity onCreate

public class ActivityTest extends Activity {  
private static final String TAG = "appA";
private static final String TAG = "appB";
public void onCreate(Bundle savedInstanceState) {  
super.onCreate(savedInstanceState);   //调用父类
setContentView(R.layout.main);
Log.e(TAG, " onCreate");
}

protected void onStart() {  
        super.onStart();  
        Log.e(TAG, "start onStart");  
}  
......

  • 查看 DDMS logcat 里也可以显示调用生命周期{time,pid,tag,message},在计算是切换时卡顿(手机),还是 app 刷新时卡顿。

切换 app

A.onResume() -> A.onPause() -> B.onStart() -> B.onResume()

可以在切换时打对应的 log


如果有源码,可以用另外的办法,可以联系陈大喵 jiazurongyu

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 2 条回复 时间 点赞

完成品质管理系统后,本人打算继续游戏人间去咯。

—— 来自 TesterHome 官方 安卓客户端

棋牌游戏内存泄漏,ddms+mat 可以适用吗?不知道 cocos 的非传统 android,能否使用该工具测试

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册