我使用http://software.tavlikos.com/2010/12/08/multitasking-in-ios-the-monotouch-way-part-i/文章的代码示例在iOS应用程序DidEnterBackground事件上运行后台任务。完成iOS后台任务,前台移动时
任务很重,很长的时间 - 接近1分钟。如果用户强制应用程序回到前台,他应该等到任务完成。这有点弱。
我试图用WillEnterForeground事件:
public override void WillEnterForeground (UIApplication application)
{
if (taskId != 0) {
Console.WriteLine("Finish previous task");
application.EndBackgroundTask(taskId);
taskId = 0;
}
}
但它调用后任务结束。
如何在用户切换到应用程序之前切断后台任务执行?
DidEnterBackground代码:
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;
}
您好!你能否也请张贴你的DidEnterBackground方法? – 2012-07-16 10:22:53
已更新。内在的任务是测试。我没有发布原始背景任务,该任务正在运行一分钟左右。 – 2012-07-16 10:36:50