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

Cri*_*ris 6 multitasking ios

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

-   (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {   
Run Code Online (Sandbox Code Playgroud)

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

这是正确的方法吗?

在此先感谢c.

sbs*_*sbs 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: 
Run Code Online (Sandbox Code Playgroud)
  • 首先输入app:调用0,然后调用1;

  • 点击主页按钮:拨打2,然后拨打3;

  • 双击主页按钮(多任务处理):拨打2;

    • 如果用户选择其他应用程序或再次点击主页按钮:拨打3;

    • 如果用户再次点击主页按钮:拨打1;

  • 再次输入app:调用4,然后调用1;


小智 13

- (void)applicationDidBecomeActive:(UIApplication *)application {
}
Run Code Online (Sandbox Code Playgroud)

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