iOS 4 のバックグランド処理

iOS 4 搭載の iPhone 3GS、iPod Touch 3rd 以降のマルチタスク対応機種で、バックグランドでアプリの実行が可能となりましたが、調べてみると幾つかの制限がある様です。

iOS 4 でアプリをバックグランドタスクとして渡すと、特に何も宣言しなければ、サスペンド処理でバックグランドタスク移行時の状態を保持し、復帰時に状態を復元するといった処理になるみたいです。
バックグランドでタスク処理をする場合には、beginBackgroundTaskWithExpirationHandler をコールしてシステムに伝え、システムに受け入れられればバックグランドでタスク処理を続ける事が可能となります。しかし、その処理時間は 10分だそうです。

また、共有リソースはフォアグランドアプリが使用する為、サスペンド前には利用を停止する必要があります。要は、他のアプリでも使う可能性のあるデータへのアクセスは、バックグランドではしてはいけないよ。と言ったところです。

技術者向け iOS 4.0の新機能 - かみやんの技術者日記

WipeWrite PB を作ろうとした当初

「バックグランドで指定した間隔でペーストボードをクリア出来ればいいんじゃないか?」

と考えた事もあったのですが、タイミングによっては他のアプリでコピーした内容が即座にクリアされる場合があるかもしれないと思い、バックグランド動作の組み込みは考えてもいませんでしたが、そもそも、そうした処理自体がダメみたいですね。

時計アプリのアラーム機能は、UILocalNotification を使用してローカル通知を使用してスケジューリングしているので別の話になります。

ハンドヘルドデバイスは PC と比べればメモリやストレージ等には制限があるので、当然と言われれば、そうなのかもしれません。

Appshocker

HonyaClub.com

リンクシェア アフィリエイト紹介プログラム