【发布时间】:2012-07-16 09:22:53
【问题描述】:
我使用来自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;
}
【问题讨论】:
-
您好!您能否也发布您的 DidEnterBackground 方法?
-
已更新。内部任务是为了测试。我没有发布运行近一分钟的原始后台任务。
标签: ios multithreading xamarin.ios background-process