APP启动分为冷启动 VS 热启动
如果你刚刚启动过App,这时候App的启动所需要的数据在缓存中,再次启动的时候称为热启动。如果设备刚刚重启,然后启动App,这时候称为冷启动。
网上查了一下启动时间在小于400ms都属于优秀的,因为从点击图标到显示Launch Screen,到Launch Screen消失这段时间就差不多400ms。
注意:启动时间不可以大于20m,否则会被系统杀掉。
在Xcode中,可以通过设置环境变量来查看App的启动时间,DYLD_PRINT_STATISTICS和DYLD_PRINT_STATISTICS_DETAILS。
配置打印启动日志 控制台打印结果在启动过程中,目前知道能做的就是让主线程做必须主线程做的事和必须在启动过程中就做完的事,让子线程做非主线程必须做的事;能默默的在后台做的事就偷偷在后台做,不让前台有感应。
暂时解决方法是:
AppDelegate
一般我们主要在AppDelegate的代理方法里进行初始化工作,主要包括:didFinishLaunchingWithOptions和applicationDidBecomeActive
我们可以在AppDelegate进行线程区分
@interfaceAppDelegate()
//业务方需要的生命周期回调
@property(strong,nonatomic)NSArray> * eventQueues;
//主框架负责的生命周期回调@property(strong,nonatomic)id basicDelegate;
@end
- (BOOL)application:(UIApplication *)applicationdidFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
for(id delegateinself.eventQueues) {
[delegateapplication:applicationdidFinishLaunchingWithOptions:launchOptions];
}
return[self.basicDelegateapplication:applicationdidFinishLaunchingWithOptions:launchOptions];
}
这样可以得到一个单独的AppDelegate文件对必须工作进行处理,其他在组里进行处理。
网友评论