2011-08-11 184 views
1

有没有办法杀死后台应用程序?iphone杀死后台应用程序

我有一个应用程序,我正在工作,记录一个声音,然后在滚动视图上绘制出它与我有关的问题是它崩溃,如果记录太长,因为它耗尽内存试图绘图它。我的解决方法是监视可用内存的数量,并预测有多少内存使用情况绘图将在没有足够的时间之前停止录制。问题在于,我在后台运行的应用程序越多,停止录制就越快,而不是杀死后台应用程序,以使ios在didRecieveMemoryWarning之前执行操作。重申我的问题如何杀死这些后台应用程序?苹果会对此皱眉吗?

+4

我认为如果你需要问这个问题,你的设计就坏了。你应该从你的模型中分离你的视图,并给予前者足够的智能来处理低内存警告。对于它可以显示的视图,UITableView基本上是一样的。 – Tommy

回答

5

你想杀死其他后台应用程序从您的前台应用程序编程?我怀疑苹果会对此皱眉。

从理论上讲,你可以从sysctl获得他们的进程ID,并发送一个SIGKILL来终止它们,但是iOS won't let you可以获得有关其他进程的信息,除非你是root用户(意味着越狱)。

+0

这是一个耻辱,我希望这会像调用系统例程一样简单。好吧,我想我将不得不使它阴谋,因为它记录我猜这将更好看。谢谢。 – Daniel

+0

您也可以在第二次收到内存警告时停止录制。在第一次警告时释放你所能做的,但在第二次警告时停止(或者甚至可以尝试等待第三次警告) – progrmr

+0

只要合法地获取进程ID,就可以查看http://www.macstories。 net/reviews/appswitch-cool-process-management-app-for-iphone /我认为他们正在使用URL方案数据库和ASL日志的组合。 – Jano

1

iOS会在开始发送内存警告的同时开始终止未使用的后台应用程序本身。但是你根本不应该得到内存警告,而是尝试修复你的内存管理。

1

杀死后台应用程序无法解决您的问题。即使所有其他应用程序都被杀死了,您的应用程序在一段时间后仍会崩溃

考虑使用一个小缓冲区来存储这些数据并定期写入存储。当用户需要向后滚动并阅读较旧的记录时,请从存储中将其读回。通过限制窗口大小,应用程序将只使用一定量的内存。