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;
}
}
ただし、タスクの終了後に呼び出します。
ユーザーが完了する前にアプリに切り替えた場合、バックグラウンドタスクの実行を中断するにはどうすればよいですか?
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;
}