【问题标题】:iphone killing background appsiphone杀死后台应用程序
【发布时间】:2015-08-30 02:39:13
【问题描述】:

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

我正在开发一个应用程序,它会记录声音,然后在滚动视图上将其绘制出来.我对此的解决方法是监控可用内存量并预测绘图将占用多少内存使用量,并在内存不足之前停止记录。问题是我在后台运行的应用程序越多,它停止录制的速度就越快,而不是像 ios 在 didRecieveMemoryWarning 之前那样杀死后台应用程序以腾出空间。重申我的问题,我怎样才能杀死这些后台应用程序?苹果会对此皱眉吗?

【问题讨论】:

  • 如果您需要问这个问题,我认为您的设计已损坏。您应该将视图与模型分离,并为前者提供足够的智能来处理低内存警告。 UITableView 对它可以显示的那些视图做的事情基本上是一样的。

标签: ios background didreceivememorywarning


【解决方案1】:

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

理论上,您可以从 sysctl 获取他们的进程 ID,并向他们发送 SIGKILL 以终止他们,但 iOS won't let you 获取有关其他进程的信息,除非您是 root(这意味着越狱)。

【讨论】:

  • 那很遗憾,我希望它会像调用系统例程一样简单。好吧,我想我必须将它绘制成情节,因为它记录了我想这会更好看。谢谢。
  • 您也可以在第二次收到内存警告时停止录制。在第一次警告时释放你所能做的,但在第二次警告时停止(或者甚至尝试等待第三次警告)
  • 您可以合法地获取进程ID,看看macstories.net/reviews/…我认为他们正在使用URL方案数据库和ASL日志的组合。
【解决方案2】:

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

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-05-15
      • 1970-01-01
      • 2021-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多