文档首页/ 云手机服务器 CPH/ 用户指南/ 使用AOSP功能/ 对接oom高内存应用退出广播
更新时间:2026-07-24 GMT+08:00
分享

对接oom高内存应用退出广播

功能介绍

云手机进程占用的内存过高,可能会引发手机容器卡顿。为了防止内存占用过高,系统会在内存占用过高时,会触发oom kill对高内存占用的进程进行查杀,为了使得用户感知到应用被查杀的动作,系统查杀应用后会发送广播进行通知。

广播信息

  • 广播action:android.intent.action.APP_KILLED
  • 广播附带信息:
    • 查杀原因:key是reason;value是high-memory
    • 被杀的进程:key是comm;value是进程名称
    • 被杀进程的uid:key是uid;value是进程uid

广播附带信息的获取方法请参考使用方法

使用方法

监听被杀应用广播

客户后台管理程序可以通过监听被杀应用广播,获取被杀应用的包名和原因。

public static final String ACTION_APP_KILLED = "android.intent.action.APP_KILLED"; 

private MyBroadcastReceiver mBroadcastReceiver = new MyBroadcastReceiver(); 

private void registerReceiver() { 
	IntentFilter filter = new IntentFilter(ACTION_APP_KILLED); 
	this.registerReceiver(mBroadcastReceiver, filter); 
} 

private void unregisterReceiver() { 
	this.unregisterReceiver(mBroadcastReceiver); 
} 

private class MyBroadcastReceiver extends BroadcastReceiver { 

	private static final String TAG = "AppKilled"; 

	@Override 
	public void onReceive(Context context, Intent intent) { 
		Log.d(TAG, "package: " + intent.getStringExtra("comm")); 
		Log.d(TAG, "reason: " + intent.getStringExtra("reason")); 
                Log.d(TAG, "uid: " + intent.getStringExtra("uid")); 
	} 
}

约束

  • 触发系统oom后,可能导致系统异常、重启、broadcast服务异常、系统卡死等,此时可能接收不到广播。
  • 对于频繁触发oom kill的进程和容器(1分钟内最多触发6次),不会一直发送广播。
  • 客户后台监控程序建议注册到系统服务中,如果使用app,可以通过添加白名单进行保活。

    cmd performance bg-killer -a xxx

    cmd performance auto-run -a xxx

    其中,xxx为应用包名。

相关文档