ozgur 的回答不起作用。UIApplicationDidReceiveMemeoryWarningNotification 是一个 UIKit 事件,我还没有找到从扩展中访问它的方法。要走的路是这些选项中的最后一个:DISPATCH_SOURCE_TYPE_MEMORYPRESSURE。
我在广播上传扩展中使用了以下代码(Swift),并通过断点确认它在扩展失败之前的内存事件期间被调用。
let source = DispatchSource.makeMemoryPressureSource(eventMask: .all, queue: nil)
let q = DispatchQueue.init(label: "test")
q.async {
source.setEventHandler {
let event:DispatchSource.MemoryPressureEvent = source.mask
print(event)
switch event {
case DispatchSource.MemoryPressureEvent.normal:
print("normal")
case DispatchSource.MemoryPressureEvent.warning:
print("warning")
case DispatchSource.MemoryPressureEvent.critical:
print("critical")
default:
break
}
}
source.resume()
}