当应用程序进入前台时重新加载应用程序数据?

时间:2010-10-15 14:31:16

标签: ios multitasking

我是iPhone开发人员的新手...我正在构建一个从本地sqlite3数据库加载数据的应用程序

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

当我点击iPhone按钮并将其放在背景中然后我回想起它我以同样的方式看到(正常)应用程序我离开它。我想做的是,当它出现在foregroud中时,重新加载数据就像从头开始调用一样。

这是正确的方法吗?

提前致谢 角

4 个答案:

答案 0 :(得分: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;

答案 1 :(得分:13)

- (void)applicationDidBecomeActive:(UIApplication *)application {
}

重新加载应用程序委托的上述功能中的数据,以便在应用程序到达前台时刷新数据。

答案 2 :(得分:4)

当iOS通知它应该在后台运行时,你可以exit()你的应用程序:

- (void)applicationDidEnterBackground:(UIApplication *)application {
  exit(0);
}

答案 3 :(得分:3)

我认为这是UIApplication的代表:

- (void)applicationWillEnterForeground:(UIApplication *)application
  

在iOS 4.0及更高版本中,此方法是   被称为过渡的一部分   活跃状态的背景。   您可以使用此方法撤消许多   你对你的改变   申请进入   背景。对此方法的调用是   不约而同地打电话给   applicationDidBecomeActive:方法,   然后从中移动应用程序   非活动状态。