2015-04-01 50 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