我正在参加「初夏创意投稿大赛」详情请看:初夏创意投稿大赛

夏天来了,小伙伴们,你们的手机会发烫呢? (来自灵魂的拷问)

作为一个重度手机使用患者,macos10136怎么升级夏天手机发烫是我们不能容忍的事情。对于App开发者来说,考虑如何去减http协议少电量的消耗也是我们的一个必修课。。。

在前文http://www.baidu.com【夏天来了,App开发者们如何看待手机发烫问题?】中,我们知道手机中APP耗电有四个方面:

What Consumes Energy?

夏天来了,iOS开发者们该如何减少App耗电?(上)

  • Processing : CPU处理
  • Networkinhttp 500g : 网络请求
  • Location :定位
  • Graphics : 屏幕事务所所长的委托任务绘制

那么如事务何减少电量消耗呢?有以下几点需要我们注意:

夏天来了,iOS开发者们该如何减少App耗电?(上)

  • Identify :保证一致性,可复用
  • Optimize : 优化,更高效
  • Coaleios是苹果还是安卓sce :合并
  • Reduce : 减少不必要处理

Energy Efficient Coding

作为iOS开发者,该如何编写省电的代码呢?

Networking

以社http 404交APP为例,网络有三个可以优化的点FeedPost a PhotoAnalytics

夏天来了,iOS开发者们该如何减少App耗电?(上)

Feed

对于信息流的处理,我们可以做到在需要缓存视频变成本地视频时去刷新数据(提升体验的前提下可以预加载),对于已经加载的数据做本地缓存,这样可以节省流量以及不必要的网络开销。

夏天来了,iOS开发者们该如何减少App耗电?(上)

Post a Photo

发送一张图片,通常情况我们会选择立即上传,当上传失败后的重新上传。
但其实我们macos系统版本可以做的更好,我们可以批处理上传图片,设置超时时间,以事务性工作是什么意思及减少重试。达到重试限制后使用后台会话去上传图片。(发送图片资源、媒体资源时,压缩资源也是很必要的)

夏天来了,iOS开发者们该如何减少App耗电?(上)

Analytics

上传用户分析数据,苹果推荐使用NSURLSession Background Session,好处有自动重试全程监控,以及全新的属性Properties(包括了Start timeWorkload size),帮助app知道处理的最佳时机。(适用于一些埋点需求)

夏天来了,iOS开发者们该如何减少App耗电?(上)

// Setup NSURLSession Background Session
let config = URLSessionConfiguration.background(withIdentifier: "com.socialapp.background")
let session = URLSession(configuration: config, delegate: ..., delegateQueue: ...)
// Set discretionary property
config.discretionary = true
// Create Request and Task
varrequest =URLRequest(url:URL(string:"https://www.example.com/")!)request.addValue("...", forHTTPHeaderField:“...”)
lettask =session.downloadTask(with:request)
// Set time window
task.earliestBeginDate=Date(timeIntervalSinceNow: 2 * 60 * 60)// Set workload size
task.countOfBytesClientExpectsToSend = 80
task.countOfBytesClientExpectsToReceive = 2048
task.resume()

最佳实践 (Best Practices )

  • I事务dentify确保事务不重复
  • Opmacosx是什么文件夹timize使用background session
  • Coalesce批处理事务
  • Reduce减少重试次数

Location

Location API中包含了
Conti事务所是干什么的nuous l缓存ocation(持续定位)
Quick locatmacosxion u缓存视频合并apppdate(快速更新位置)
Regi事务所on monitoring(区域监测)
Visit monitor缓存的视频在哪ing(访问监测)
Significant lo事务的四个特性cation changmacos系统下载e(显著的位置变化http://www.baidu.com)缓存英文多个类型。

苹果建议合理的使用httpwatchAPI可ios越狱以减低耗电。

夏天来了,iOS开发者们该如何减少App耗电?(上)

// Create location manager
locationManager = CLLocationManager
locationManager.delegate = self
locationManager.requestWhenInUseAuthorization()
// Set desired accuracy, auto-pause, and activity type appropriately
locationManager.desiredAccuracy = kCLLocationAccuracyThreeKilometers
locationManager.pausesLocationUpdatesAutomatically = true
locationManager.activityType = CLActivityTypeNavigation
// Set allows background if its needed
locationManager.allowsBackgroundLocationUpdates = true
// Start location updates
locationManager.startUpdatingLocation() 
// Stop location when no longer needed
locationManager.stopUpdatingLocation() 

夏天来了,iOS开发者们该如何减少App耗电?(上)

最佳实践 (Best Practices )

  • IdentHTTPify清楚 app 需要的定位精确http协议度(适合你的需求就好)
  • Optimize使用其它来替代 Continuous location(因为这个真的很耗电)
  • Coalesce不需要使用定位时,就停止定位
  • Reduce延后定位更新

Graphics

关于图像处理有两条建议:

  1. 保证在 UI 真的需要有变化时,进行屏幕更新;
  2. 避免使用高斯模式blur。另外MacOS尽量少使用独立显卡。

夏天来了,iOS开发者们该如何减少App耗电?(上)

夏天来了,iOS开发者们该如何减少App耗电?(上)

最佳实践 (Best Practices )

  • Identify高斯模糊的使用
  • OptimizeMacOS尽量少使用独立显卡,只在动画性能吃紧、或者其独有功能时才缓存视频变成本地视频去使用它
  • Reduce在UI真的有必要变化时,更新屏幕

Processing

CPU方面需要明确 app 要完成的任务,并且高效的完成任务,避免使用定时器timer,如果必须使ios越狱用,设置一个较长的间隔时间。

夏天来了,iOS开发者们该如何减少App耗电?(上)

夏天来了,iOS开发者们该如何减少App耗电?(上)

夏天来了,iOS开发者们该如何减少App耗电?(上)

最佳实践 (Best Practices )

  • Idemacos系统版本ntify在后台完成工作
  • Optimize使用后台应用刷新
  • Coales缓存视频变成本地视频ce使用background session
  • Reduce限制事务处理

http协议macoscatalina这些是在编码中需要注意的地方,但是我们还需要工具来检测App的耗电量,关于Debug Tools,我们下篇文章再聊!