每次我的应用程序启动时(无论是冷启动还是后台启动)我想让它做一些事情,我该如何做到这一点?

时间:2013-03-27 01:25:18

标签: ios objective-c ios5 ios6

我希望每次应用启动时都会检查剪贴板中是否有URL,如果是,请使用它执行某些操作。无论何时应用程序启动,我都可以触发哪种方法,无论是从冷启动(例如在后台杀死),还是只按主页按钮,复制URL并重新启动。

这是其中之一吗?

 - (void)applicationDidBecomeActive:(UIApplication *)application
 - (void)applicationWillEnterForeground:(UIApplication *)application
 - (void)applicationDidBecomeActive
 - (void)applicationDidFinishLaunching:(UIApplication *)application

混淆。

4 个答案:

答案 0 :(得分:14)

正如@rmaddy所说,启动应用后使用的正确方法是来自您的应用代表的applicationWillEnterForeground:。 当用户跳回来时,将调用此方法,但在其他情况下,您不需要响应(例如,用户接收文本消息并将其解除)。

但是,从我的测试开始,当应用程序从冷启动时,applicationWillEnterForeground: 被调用;你应该在applicationDidFinishLaunchingWithOptions:中找到它。

所以,基本上,你的app代理应该包含这样的代码:

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

    [self checkForURL];
    ...
}


- (void)applicationWillEnterForeground:(UIApplication *)application {

       [self checkForURL];
       ...
}

- (void)checkForURL{
    //code for checking for URL goes here
}

希望有所帮助。

答案 1 :(得分:1)

当应用程序启动或从后台激活时,会调用

- (void)applicationDidBecomeActive

此文档很好地解释了所有内容:http://developer.apple.com/library/ios/#documentation/iphone/conceptual/iphoneosprogrammingguide/ManagingYourApplicationsFlow/ManagingYourApplicationsFlow.html

答案 2 :(得分:0)

参考UIApplicationDelegate协议,可以用两种方法处理app启动的处理:

  • application:willFinishLaunchingWithOptions:
  • application:didFinishLaunchingWithOptions:

可以使用以下方法处理从后台启动应用程序:  applicationDidBecomeActive:

根据上述电话,您可以处理您的申请。

答案 3 :(得分:0)

在您的应用委托中,将其添加到其他答案建议的方法(applicationDidFinishLaunchingWithOptions :)。在根视图控制器中注册以下通知。当应用程序在已经开始运行后启动时,将始终调用此方法。

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(bringingItBack)      name:UIApplicationWillEnterForegroundNotification object:nil];

这将涵盖应用启动时以及刚刚从后台恢复时的实例。