• 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

Fast App Switch周りをガリガリやっていたら、@hkato193さんからメモリ警告絡みでアドバイスを頂きました。大変参考になったのでメモ。

http://twitter.com/hkato193/status/7972941820067840

@satoko ですので、メモリ警告が出てもデータ送信が継続できるようになっているか(ビューとかが捨てられるのは普通通りの対処でOK)、willTermiate(や時間切れハンドラ)で通信遮断やデータ送信失敗への対処が出来ているかがポイントです。Fri Nov 26 01:44:32 via YoruFukurou

つまり、Background突入時、ファイル送信などの処理をTask Completionでやる際に、

  1. メモリ警告で送信処理を中止しない
  2. 一方で、willTerminateやTask CompletionのExpirationHandler内で正しくキャンセル処理を行うこと:
    • 通信遮断
    • データ送信失敗への対処(送信データの保存など)
    • ユーザへの通知

Task Completionとは

Task Completion APIを使えば、Expiration handlerを使ってBackgroundで処理を行える:

   1  // WWDC 2010 Session 109 
   2  // Adopting Multitasking on iPhone OS, Part2 より引用
   3  self.bgTask = [app beginBackgroundTaskWithExpirationHandler:^{ 
   4  	[self prepareForSuspend];
   5  	[self pauseUpload];
   6  }];
   7  
   8  // returns after upload finishes or pauses 
   9  [self uploadPhotos];
  10  
  11  [app endBackgroundTask:self.bgTask];

詳細の書き方については、BlockやらGrand Central Dispatchを理解する必要がありそうなのですが、なんとなく次が見えた感じです。

posted by Png satoko on Thu 2 Dec 2010 at 15:39
Contents
メモリ警告とTask Completionについてのメモ
Comments
KingofSmack: Here also good reads for this mobile applicatio... '14-5
satoko: stackoverflowでも同じエラーを挙げている人がいたので、1.3でアップロードしたよっ... '10-12
ujihisa: :%s/blog/glob/g '10-7
satoko: しゅが〜様 返事が遅くなって申し訳ありません。また、投稿百景ご購入ありがとうございます。 ... '09-10
しゅが~: こんにちは。投稿百景を発売日翌日から利用しています。本当にいいAppを作っていただきました。罫... '09-10
Services from s21g
twpro(ツイプロ)
Twitterプロフィールを快適検索
地価2009
土地の値段を調べてみよう
MyRestaurant
自分だけのレストラン手帳
Formula
ブログに数式を埋め込める数式コミュニティ