8

アプリケーション内でコアロケーションフレームワークを使用しており、UIBackgroundMode または Required バックグラウンドモード (Xcode 4.2) でロケーション文字列を設定して、didUpdateToLocationアプリがバックグラウンドで実行されているときにメソッドから更新されたロケーションを取得し、この更新されたロケーションをdidUpdateToLocationコアロケーションフレームワークのメソッド内の特定のリンク。

私の質問は、バックグラウンドで実行されている場合、しばらくするとアプリが終了するかどうかです。

4

5 に答える 5

15

いいえ、特定の時間は定義されていません。しかし、アプリは特定のパラメーター (バッテリーの消耗、メモリ フットプリントの問題など) に基づいて確実に終了します。

開発者向けドキュメントでは、「システムは中断されたアプリを可能な限り長くメモリに保持し、空きメモリの量が少なくなったときにのみそれらを削除します。メモリに残っているということは、アプリのその後の起動がはるかに高速であることを意味します。」

詳細については、これを参照してください - http://developer.apple.com/library/ios/#DOCUMENTATION/iPhone/Conceptual/iPhoneOSProgrammingGuide/ManagingYourApplicationsFlow/ManagingYourApplicationsFlow.html

于 2012-06-07T05:49:04.027 に答える
3

iOS アプリは、次の理由により終了する場合があります。

  1. ウォッチドッグ タイムアウト

おそらくご存じのとおり、iOS 4.x 以降、iOS アプリを終了しても、ほとんどの場合、アプリは終了せず、バックグラウンドに送られます。

However, there are times when the OS will terminate your app and
generate a crash log if the app didn’t respond fast enough. These
events correspond with the implementation of the following
UIApplicationDelegate methods:

   - application:didFinishLaunchingWithOptions:
   - applicationWillResignActive:
   - applicationDidEnterBackground:
   - applicationWillEnterForeground:
   - applicationDidBecomeActive:
   - applicationWillTerminate:

上記のすべての方法で、アプリが処理を完了するまでの時間が限られています。アプリの実行に時間がかかりすぎると、OS がアプリを終了します。

  1. ユーザーの強制終了

iOS 4.x はマルチタスクをサポートしています。アプリが UI をブロックして応答を停止した場合、ユーザーはホーム画面からホーム ボタンをダブルタップしてアプリを終了できます。

注: ホーム ボタンをダブルタップすると、過去に実行したすべてのアプリケーションのリストも表示されることに気付いたかもしれません。これらのアプリは必ずしも実行されているわけではなく、必ずしも中断されているわけでもありません。

通常、ユーザーがホームボタンを押すと、アプリは約 10 分間バックグラウンドに留まり、その後 OS によって自動的に終了されます。したがって、ホーム ボタンをダブルタップして表示されるアプリのリストは、過去に実行されたアプリのリストにすぎません。

  1. メモリ不足の終了

UIViewController をサブクラス化するとき、didReceiveMemoryWarning メソッドに気付いたかもしれません。

フォアグラウンドで実行されているアプリは、メモリへのアクセスと使用に関して最も優先度が高くなります。ただし、アプリがデバイスで使用可能なすべてのメモリを取得するわけではありません。各アプリは、使用可能なメモリの一部を取得します。

総メモリ消費量が特定のレベルに達すると、OS は UIApplicationDidReceiveMemoryWarningNotification 通知を送信します。同時に、アプリに対して didReceiveMemoryWarning が呼び出されます。

この時点で、アプリが引き続き適切に実行されるように、OS はバックグラウンドでアプリの終了を開始してメモリを解放します。すべてのバックグラウンド アプリが終了しても、アプリがまだメモリを必要としている場合、OS はアプリを終了します。

于 2015-02-17T10:50:50.677 に答える
1

バックグラウンドでの位置情報更新が数時間機能することを確認しました。しかし、受信のない場所に行くと、デバイスは GPS 更新の送信を停止し、受信のある場所に行っても開始しません。これは約 30 分後に発生します。

しかし、これを追加すると、iOS6 でアプリが終了しなくなります。

[locationManager setPausesLocationUpdatesAutomatically:NO];
于 2013-01-03T19:29:57.640 に答える
0

クイックアンサーはほとんどありません。詳細については、以下をお読みください。

iOSデバイスではマルチタスクが有効になっているため、a)アプリに割り当てられた量のメモリが割り当てられ、b)デバイスは、任意の時点で発生するタスク、つまりメモリを使用するアプリケーションの量を制限します。iOSデバイスを使用して複数のアプリを開くと、最初に開いたアプリが終了し、からリロードされている可能性があることに気付くでしょうviewDidLoad

一般に、アプリが最近開いたアプリである場合(または、誰かがマルチタスクメニューを頻繁にクリアする電話でも)、デバイスはバックグラウンドでアプリケーションを終了しないと言っても差し支えありません。

于 2012-06-07T05:53:16.693 に答える