我使用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