我看到一些应用程序在检测到内存不足时会生成警告。我尝试在我的应用程序中执行此操作但遇到了问题。使用模拟器来模拟内存警告,生成的警报会弹出两次,然后我才能点击“确定”并在最后一次消失之前再次弹出9次。
调用didReceiveMemoryWarning时生成警报是一个坏主意吗?
如果没有,有没有比我下面更好的方法呢?
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Release any cached data, images, etc that aren't in use.
...
UIAlertView *alert = [[UIAlertView alloc]
initWithTitle:@"Warning"
message:@"Your device is low on memory..."
delegate:nil
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[alert show];
[alert release];
}
谢谢,
菲尔
答案 0 :(得分:12)
一般来说,您不应该通知用户内存不足。毕竟,他们能做什么?您的应用程序是前台应用程序,除了Apple应用程序之外,它正在消耗设备的大部分内存。用户在看到内存消息时要做什么?
当您收到内存不足通知时,您应该专注于释放内存,而无需用户交互。
答案 1 :(得分:0)
获取内存警告是一个严重的问题,任何开发移动应用程序的开发人员都不能忽视这一点。您应该始终释放占用类的didReceiveMemoryWarning方法中大部分内存的变量。
没有使用向用户显示此应用消耗大量内存的警报,因为它没有任何业务,他们可以做什么。相反,你应该专注于如何在没有用户交互的情况下减少内存消耗。以下是减少应用程序内存消耗的方法
@autoreleasepool
声明答案 2 :(得分:-1)
据我了解,您可能会在应用崩溃(或被杀)之前得到此信息。如果你设法释放内存,应用程序可能会存活(但不保证)。
可能有一些合法用例。由于它通常是崩溃的前奏,您可能想要警告用户这一点。这可能采取以下消息的形式:“您的设备内存不足。因此,此应用程序可能会意外退出。如果问题仍然存在,请尝试关闭电话并重新打开”。假设一切都很好,这不应该出现 - 所以你可能需要一些警告。
这可能在越狱手机上更常见,其中流行的“背景”应用程序允许应用程序在后台运行(通常直到这种情况发生 - 此时它们被强行退出 - 请参阅评论{{3例如)。
要解决连续11次触发事件的问题..您可以对弹出窗口进行速率限制。例如:显示时,存储自纪元以来的秒数。然后 - 检查一段时间后再次显示它。