b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

gps信号 《高性能iOS 应用开发》之降低你 APP 的电量消耗(4)

电脑杂谈  发布时间:2018-02-13 20:33:50  来源:网络整理

3.5 在应用关闭后重启

在其他应用需要更多资源时, 后台的应用可能会被关闭.在这种情况下, 一旦发生位置变化,应用会被重启,因而需要重新初始化过程,若出现这种情况,application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions方法会受到键值为UIApplicationLaunchOptionsLocationKey的条目

如下代码: 在应用关闭后重新初始化

- (void)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // 因缺乏资源而关闭应用后, 监测应用是否因为位置变化而被重启
    if (launchOptions[UIApplicationLaunchOptionsLocationKey]) {
// 开启监测位置的变化
        [self.manager startMonitoringSignificantLocationChanges];
    }
}

四 屏幕

屏幕非常耗电, 屏幕越大就越耗电.当然,如果你的应用在前台运行且与用户进行交互,则势必会使用屏幕并消耗电量

这里仍然有一些方案可以优化屏幕的使用

4.1

当应用在前台时, 使用, 一旦应用进入了后台,则立即暂停.通常来说,你可以通过 UIApplicationWillResignActiveNotification或UIApplicationDIdEnterBackgroundNotification的通知事件来暂停或停止,也可以通过UIApplicationDidBecomeActiveNotification的通知事件来恢复

4.2 视频播放

我在上家公司就是做视频类App的,当时就采用了这个技术 保持屏幕常亮

在视频播放期间,最好保持屏幕常量.可以使用UIApplication对象的 idleTimerDisabled属性来实现这个目的.一旦设置了 YES, 他会阻止屏幕休眠,从而实现常亮.

与类似,你可以通过相应应用的通知来释放和获取锁

4.3 多屏幕

使用屏幕比休眠锁或暂停/恢复要复杂得多

如果正在播放电影或运行, 你可以将它们从设备的屏幕挪到外部屏幕,而只在设备的屏幕上保留最基本的设置,这样可以减少设备上的屏幕更新,进而延长电池寿命

处理这一场景的典型代码会涉及一下步骤

gps信号模拟器_外置gps 信号_gps信号

1 在启动期间监测屏幕的数量 如果屏幕数量大于1,则进行切换

2 屏幕在链接和断开时的通知. 如果有新的屏幕加入, 则进行切换. 如果所有的外部屏幕都被移除,则恢复到默认显示

@interface LLMultiScreenViewController ()
@property (nonatomic, strong)UIWindow  *secondWindow;
@end
@implementation LLMultiScreenViewController
- (void)viewDidAppear:(BOOL)animated{
    [super viewDidAppear:animated];
    [self updateScreens];
}
- (void)viewDidDisappear:(BOOL)animated{
    [super viewDidDisappear:animated];
    [self disconnectFromScreen];
    
}
- (void)viewDidLoad {
    [super viewDidLoad];    
    [self registerNotifications];    
}
- (void)registerNotifications{
    
    NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];
    [nc addObserver:self selector:@selector(scrensChanged:) name:UIScreenDidConnectNotification object:nil];
}
- (void)scrensChanged:(NSNotification *)nofi{
    [self updateScreens];
}
- (void)updateScreens{
    
    NSArray *screens = [UIScreen screens];
    if (screens.count > 1) {
        UIScreen *secondScreen = [screens objectAtIndex:1];
        CGRect rect =secondScreen.bounds;
        if (self.secondWindow == nil) {
            self.secondWindow = [[UIWindow alloc]initWithFrame:rect];
            self.secondWindow.screen = secondScreen;
            
            LLScreen2ViewController *svc = [[LLScreen2ViewController alloc]init];
            svc.parent = self;
            self.secondWindow.rootViewController = svc;
        }
        self.secondWindow.hidden = NO;
    }else{
        [self disconnectFromScreen];
    }
}
- (void)disconnectFromScreen{
    
    if (self.secondWindow != nil) {
        // 断开连接并释放内存
        self.secondWindow.rootViewController = nil;
        self.secondWindow.hidden = YES;
        self.secondWindow = nil;
    }
}
- (void)dealloc{
    
    [[NSNotificationCenter defaultCenter] removeObserver:self];
    
}


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/shumachanpin/article-76047-4.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    每日福利
    热点图片
    拼命载入中...