2015-04-01 81 views
1

我开发了一个Android应用程序,我使用application.registerActivityLifecycleCallbacks(http://developer.android.com/reference/android/app/Application.html)知道每个Activity何时启动和停止,并将其记录为分析目的。我现在正在开发iOS版本,我无法找到与此方法等效的方法来监视应用程序显示的UIViewControllers或UIView。iOS相当于Android registerActivityLifecycleCallbacks

有人有想法吗?我是iOS的初学者,所以我可能没有采取正确的方法,随时提出其他想法。

编辑
第一个答案后,我觉得我应该更精确。 我实际上正在为其他开发人员开发一个SDK以将其包含在他们的应用程序中,所以我希望SDK对其代码的影响尽可能小。

我第一次想过做一个BaseActivity/BaseUIViewController,开发商将不得不在所有的Activity/UIViewController延伸,但它感到沉重,因为这两种语言不允许多重继承这将极大地影响他们的代码。这就是为什么registerActivityLifecycleCallbacks方法在Android中很好,因为他们只需要给我一个ApplicationActivity对象。

是否有解决方案的iOS或我将不得不创建一个BaseController?

预先感谢您。

回答

0

我还没有遇到任何特定的iOS应用程序中的application.registerActivityLifecycleCallbacks,但是您可以使用AppDelegate和每个类中存在的方法来实现自己的应用程序。

通过AppDelegate,您可以获得确定整个应用程序状态的方法,例如确定应用程序何时完成加载,何时完成加载,何时进入后台等等。有关这些状态的详细信息,请参阅UIApplicationDelegate Protocol Reference页面。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 
    // Override point for customization after application launch. 
    NSLog("Application did finish launching with options: %@", launchOptions); 
    return YES; 
} 

enter image description here

对于每个视图控制器,您可以执行添加到每个文件中的各个视图控制器生命周期方法。诸如viewDidLoad,viewWillAppear,viewDidAppearviewDidLayoutSubviews的方法是可用的。

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    NSLog(@"View %@ did load", self); 
} 
+0

谢谢你的回答,它非常清晰和快速!但是我意识到我的问题还不够清楚。实际上,我正在为其他开发人员开发一个SDK以将其包含在他们的应用程序中,所以我希望SDK对其代码的影响尽可能小。这就是为什么registerActivityLifecycleCallbacks方法在Android中很好,因为他们只需要给我一个Application或Activity对象。在你的解决方案中,他们必须在他们拥有的每个ViewController中实现一个BaseUIViewController,我认为这有点沉重。 我会编辑我的问题。 – 2015-04-01 13:36:46