6

私はiPhone開発に不慣れです。ローカルのsqlite3DBからデータをロードするアプリを構築しています

-   (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {   

iPhoneボタンをタップしてバックグラウンドに置くと、それを思い出すと、(通常どおり)アプリを離れたときと同じように表示されます。私がやりたいのは、フォアグラウンドでデータが最初から呼び出されたかのようにデータをリロードすることです。

それを行う正しい方法はどれですか?
前もって感謝します。

4

4 に答える 4

62

そのため、App Delegateクラスでは、アプリ - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions に初めてアクセスしたときにのみ呼び出されます。その後、が呼び出されます- (void)applicationDidBecomeActive:(UIApplication *)application

iPhone iOSが4.0以降の場合、ユーザーがホームボタンをクリックすると、最初にが呼び出さ- (void)applicationWillResignActive:(UIApplication *)applicationれ、次に。が呼び出され- (void)applicationDidEnterBackground:(UIApplication *)applicationます。

その後、ユーザーがアプリを強制終了するまで、アプリはバックグラウンドで実行されます。ユーザーがアプリに再度入ると、最初に、が呼び出さ- (void)applicationWillEnterForeground:(UIApplication *)applicationれ、次に。が呼び出され- (void)applicationDidBecomeActive:(UIApplication *)applicationます。

質問に関連して、どちらapplicationWillEnterForeground:かを呼び出すかapplicationDidBecomeActive:、データをリロードする必要があります。これらのメソッドに関するxcodeのコメントではありますが、Appleは、applicationDidBecomeActive:一時停止したタスクを再開したり、ユーザーインターフェイスを更新したりするために使用することを提案しています。にいる間applicationWillEnterForeground:、バックグラウンドに入るときに行った変更を元に戻すことができます。


そこで、見やすくするために、各メソッドに数字タグを付けました。呼び出されるメソッドは次のとおりです。

0 application:(UIApplication *)application didFinishLaunchingWithOptions: 
1 applicationDidBecomeActive: 
2 applicationWillResignActive: 
3 applicationDidEnterBackground: 
4 applicationWillEnterForeground: 
  • 最初にアプリに入ります。0を呼び出し、次に1を呼び出します。

  • ホームボタンを押す:2を呼び出し、次に3を呼び出します。

  • ホームボタンをダブルヒット(マルチタスク):2を呼び出す;

    • ユーザーが別のアプリを選択するか、ホームボタンをもう一度押すと、3に電話します。

    • ユーザーがホームボタンをもう一度ダブルヒットした場合:1を呼び出します。

  • もう一度アプリを入力してください:4を呼び出し、次に1を呼び出します。

于 2010-10-15T16:31:15.983 に答える
13
- (void)applicationDidBecomeActive:(UIApplication *)application {
}

アプリデリゲートの上記の機能でデータをリロードして、アプリがフォアグラウンドになったときにデータを更新します。

于 2010-10-15T14:36:49.533 に答える
4

iOSが次のようにバックグラウンドで実行する必要があることを通知したときに、アプリケーションを実行できexit()ます。

- (void)applicationDidEnterBackground:(UIApplication *)application {
  exit(0);
}
于 2010-10-15T14:36:55.343 に答える
3

それがUIApplicationの代表だと思います。

- (void)applicationWillEnterForeground:(UIApplication *)application

iOS 4.0以降では、このメソッドはバックグラウンドからアクティブ状態への移行の一部として呼び出されます。この方法を使用すると、バックグラウンドに入ったときにアプリケーションに加えた変更の多くを元に戻すことができます。このメソッドの呼び出しの後には、必ずapplicationDidBecomeActive:メソッドの呼び出しが続きます。これにより、アプリケーションが非アクティブ状態からアクティブ状態に移行します。

于 2010-10-15T14:37:39.943 に答える