我有一个 android 应用程序,我们可以从中启动其他已安装的应用程序。这有一个后台服务,它在运行我的应用程序时始终执行。在某些设备上进行测试时,注意到在启动某些应用程序(如相机、画廊)时,服务有时会由于内存不足而停止(专辑)等...所以我尝试了
private boolean isRunningOutOfMemory(){
MemoryInfo memoryInfo = new MemoryInfo();
ActivityManager activityManager = (ActivityManager)getSystemService(Service.ACTIVITY_SERVICE);
activityManager.getMemoryInfo(memoryInfo);
final long appMemeory = Runtime.getRuntime().totalMemory();
final long availableMemory = memoryInfo.availMem / 1048576L;
final long memoryThreshold = ((memoryInfo.threshold * 2) + appMemeory) / 1048576L;
return (availableMemory <= memoryThreshold);
}
如果条件为真,则显示一个对话框。此方法始终在后台运行。并且此条件有时无法成功。即如果可用内存大于阈值的两倍,则服务将在之前停止。
当没有启动其他应用程序(从我的应用程序启动)时,此可用内存会有所不同。即,正在运行的应用程序是我的。
可用内存出现这种变化的原因是什么?
是否可以找到服务停止的内存?
我怎样才能有效地处理这种情况?
提前致谢