2nd Thu
メモリ警告とTask Completionについてのメモ
Fast App Switch周りをガリガリやっていたら、[@hkato193](http://twitter.com/hkato193)さんからメモリ警告絡みでアドバイスを頂きました。大変参考になったのでメモ。
つまり、Background突入時、ファイル送信などの処理をTask Completionでやる際に、
1. メモリ警告で送信処理を中止しない
2. 一方で、willTerminateやTask CompletionのExpirationHandler内で正しくキャンセル処理を行うこと:
* 通信遮断
* データ送信失敗への対処(送信データの保存など)
* ユーザへの通知
###Task Completionとは
Task Completion APIを使えば、Expiration handlerを使ってBackgroundで処理を行える:
rails>>
// WWDC 2010 Session 109
// Adopting Multitasking on iPhone OS, Part2 より引用
self.bgTask = [app beginBackgroundTaskWithExpirationHandler:^{
[self prepareForSuspend];
[self pauseUpload];
}];
// returns after upload finishes or pauses
[self uploadPhotos];
[app endBackgroundTask:self.bgTask];
<<--
詳細の書き方については、BlockやらGrand Central Dispatchを理解する必要がありそうなのですが、なんとなく次が見えた感じです。
@satoko ですので、メモリ警告が出てもデータ送信が継続できるようになっているか(ビューとかが捨てられるのは普通通りの対処でOK)、willTermiate(や時間切れハンドラ)で通信遮断やデータ送信失敗への対処が出来ているかがポイントです。
posted by
satoko on Thu 2 Dec 2010 at 15:41 with 0 comments
