0

私のアプリケーションはiPhoneDialerをトリガーし、AppDelegateを介してバックグラウンドに移動します。AppDelegate.mファイルのどこかで、これは次のように呼ばれます。

- (void) applicationDidEnterBackground: (UIApplication *) application
{
    [self terminate];
}

外部アプリ(ダイヤラ)を使い終えると、アプリケーションは再び起動されますが、ほとんどのGUIパーツが応答しません。

ベルが鳴りますか?この問題をどのようにデバッグできますか?さらに情報が必要な場合はお知らせください。

もっと役立つために。このアプリケーションは、各エントリがダイヤル可能で、クリックするとiOSアプリが呼び出されるアドレスブックです。通話中にアプリを開いて情報を閲覧できるようにしたい

4

2 に答える 2

0

バックグラウンドに入るとapplicationdidEnterBackgroundが表示されますが、それが発生すると、アプリを完全に終了しようとしていますか?それを行うよりも、「アプリケーションはバックグラウンドで実行されません」というバックグラウンドに入らないようにOSに指示するinfo.plistキーがあります。これにより、アプリがより適切に終了します。

于 2012-10-02T13:52:22.690 に答える
0

ここでの主な問題は、一時停止の影響を考慮していないことだと思います。この質問を参照してください:iOS4はバックグラウンドから再開します

次に、アプリの状態サイクルを確認することを検討してください。これは、ここで見つけることができます 。この記事で見つけた重要なものの中には、次のものがあります。

アプリのメモリフットプリントを削減するために、アプリがバックグラウンドに移動すると、システムはアプリに代わって割り当てられた一部のデータを自動的に削除します。

  1. システムは、すべてのCoreAnimationレイヤーのバッキングストアを削除します。この作業によって、アプリのレイヤーオブジェクトがメモリから削除されたり、現在のレイヤープロパティが変更されたりすることはありません。アプリがバックグラウンドにあることを考えると、これらのレイヤーのコンテンツが画面に表示されないようにするだけです。
  2. キャッシュされた画像へのシステム参照を削除します。(アプリに画像への強い参照がない場合、画像は後でメモリから削除されます。)
  3. 他のシステム管理データキャッシュへの強い参照を削除します

つまり、アプリケーションの状態は、バックグラウンドに置かれたときの状態ではない可能性があります。このプロセス全体は大きすぎてここで詳しく説明することはできません。代わりに、上記にリンクしたAppleが提供するドキュメントを調べてください。

于 2012-10-02T13:58:12.057 に答える