我开发了一个 Android 应用程序,我在其中使用 application.registerActivityLifecycleCallbacks ( http://developer.android.com/reference/android/app/Application.html ) 来了解每个 Activity 何时启动和停止,并记录它以供分析。我现在正在开发 iOS 版本,我找不到与此方法等效的方法来监视应用程序显示的 UIViewControllers 或 UIView。
有人有想法吗?我是 iOS 的初学者,所以我可能没有采取正确的方法,请随时提出其他想法。
编辑
在第一个答案之后,我觉得我应该更精确。
我实际上正在为其他开发人员开发一个 SDK 以包含在他们的应用程序中,因此我希望 SDK 对他们代码的影响尽可能小。
我首先想到做一个 BaseActivity
/BaseUIViewController
,开发人员必须在所有 Activity
/UIViewController中扩展它
,但它感觉很重,而且由于这两种语言都不允许多重继承,这将极大地影响他们的代码。这就是为什么 registerActivityLifecycleCallbacks
方法在 Android 中很棒,因为他们只需要给我一个 Application
或 Activity
对象。
是否有适用于 iOS 的解决方案,或者我必须创建一个 BaseController ?
提前谢谢你。
最佳答案
我没有遇到任何特定于 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;
}
对于每个 View Controller ,您可以将您的实现添加到每个文件中的各个 View Controller 生命周期方法中。 viewDidLoad
、viewWillAppear
、viewDidAppear
和 viewDidLayoutSubviews
等方法可用。
- (void)viewDidLoad {
[super viewDidLoad];
NSLog(@"View %@ did load", self);
}
关于iOS 相当于 Android registerActivityLifecycleCallbacks,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29389745/