我使用来自http://software.tavlikos.com/2010/12/08/multitasking-in-ios-the-monotouch-way-part-i/文章的代码示例在 iOS 应用程序 DidEnterBackground 事件上运行后台任务。
任务繁重且时间长——接近 1 分钟。如果用户强制应用程序回到前台,他应该等到任务完成。它有点弱。
我尝试使用 WillEnterForeground 事件:
public override void WillEnterForeground (UIApplication application)
{
if (taskId != 0) {
Console.WriteLine("Finish previous task");
application.EndBackgroundTask(taskId);
taskId = 0;
}
}
但它在任务结束后调用。
如果用户在完成之前切换到应用程序,如何中断后台任务执行?
DidEnter后台代码:
public override void DidEnterBackground (UIApplication application)
{
Console.WriteLine ("DidEnterBackground");
if (taskId != 0) {
Console.WriteLine("Finish previous task");
application.EndBackgroundTask(taskId);
taskId = 0;
}
taskId = application.BeginBackgroundTask(delegate {
if (taskId != 0) {
application.EndBackgroundTask(taskId);
taskId = 0;
}
});
Console.WriteLine("Begin task");
application.InvokeOnMainThread(delegate() {
for(int i = 0; i < 700; i++) {
if ((i + 1) % 100 == 0)
Console.WriteLine("Time to remain: {0} seconds", application.BackgroundTimeRemaining);
//viewController.Touch();
}
});
application.EndBackgroundTask(taskId);
taskId = 0;
}