当前位置: 首页 > news >正文

西安网站建设xamokj商务网站规划与网页制作

西安网站建设xamokj,商务网站规划与网页制作,上海徐汇做网站,百度客户端在哪里打开前言 BatteryStats模块主要用于设备在电池供电是系统对各个模块电量使用的统计,Android提供的Battery Historain工具就是对此模块统计的数据进行解析和展示。 一 BatteryStats模块类图 模块主要类图如下:见根目录的模块类图 BatteryStats:抽象类,本模块的核心类,主要定…

前言

BatteryStats模块主要用于设备在电池供电是系统对各个模块电量使用的统计,Android提供的Battery Historain工具就是对此模块统计的数据进行解析和展示。

一 BatteryStats模块类图

模块主要类图如下:见根目录的模块类图

  • BatteryStats:抽象类,本模块的核心类,主要定义多个内部类,内部类主要包括Uid、Timer等;

  • BatteryStatsImpl:核心实现类,负责电池数据的统计计算,其实现亮BatteryStats中所有的抽象内部类,这些类用于不同统计实现;

  • Uid:针对每个进程的uid设置,用于统计不同uid下进程的耗电数据,如wakelock、sensor、Proc等数据;

  • BatteryStatsService:系统中battersystats服务,提供binder接口,但电池数据计算工作是在BatteryStatsImpl中;

  • BatteryStatsHelper:负责计算软件和硬件等各个模块的耗电数据,提供给设置、手机管家等模块展示;

  • BatterySipper:表示每一个耗电模块的数据统计。

二 BatteryStats启动过程

BatteryStats服务是在AMS中启动,其启动时序图如下: ActivityManagerService->BatteryStatsService:new BatteryStatsService->BatteryStatsImpl:new & setPowerProfileLocked ActivityManagerService->BatteryStatsService:initPowerManagement

2.1 初始化BatteryStatsService

ActivityManagerService->BatteryStatsService:new

在AMS的构造函数中初始化BatteryStatsService对象,读取统计文件中已经保存的信息,同时开启异步信息记录,设置回调,在AMS的onStart中发布服务。 BatteryStatsService构造函数主要初始化Handler、耗电统计和计算类BatteryStatsImpl,设置耗电参考指标参数等。

--javascripttypescriptshellbashsqljsonhtmlcssccppjavarubypythongorustmarkdown

    public ActivityManagerService(Context systemContext, ActivityTaskManagerService atm) {...// TODO: Move creation of battery stats service outside of activity manager service.mBatteryStatsService = new BatteryStatsService(systemContext, systemDir,BackgroundThread.get().getHandler());mBatteryStatsService.getActiveStatistics().readLocked();mBatteryStatsService.scheduleWriteToDisk();mOnBattery = DEBUG_POWER ? true: mBatteryStatsService.getActiveStatistics().getIsOnBattery();mBatteryStatsService.getActiveStatistics().setCallback(this);...}BatteryStatsService(Context context, File systemDir, Handler handler) {...HandlerThread = new HandlerThread("batterystats-handler");mHandlerThread.start();mHandler = new Handler(mHandlerThread.getLooper());mStats = new BatteryStatsImpl(systemDir, handler, this,this, mUserManagerUserInfoProvider);mWorker = new BatteryExternalStatsWorker(context, mStats);mStats.setExternalStatsSyncLocked(mWorker);mStats.setRadioScanningTimeoutLocked(mContext.getResources().getInteger(com.android.internal.R.integer.config_radioScanningTimeout) * 1000L);mStats.setPowerProfileLocked(new PowerProfile(context));mStats.startTrackingSystemServerCpuTime();...}

2.2 BatteryStatsImpl初始化:

  1. 创建存储文件、校准文件和每日文件;

  2. 创建handler信息,注此looper为AMS提供;

  3. 初始化各类型timer和counter,每一种类型的对应一类事件。

工具类主要有三类,

  • StopwatchTimer负责计时统计

  • LongSamplingCounter负责计数、

  • ControllerActivityCounterImpl包含多个负责计数的类对象,比如数据收发包统计

--javascripttypescriptshellbashsqljsonhtmlcssccppjavarubypythongorustmarkdown

    public BatteryStatsImpl(Clocks clocks) {...if (systemDir == null) {mStatsFile = null;mBatteryStatsHistory = new BatteryStatsHistory(mHistoryBuffer);} else {mStatsFile = new AtomicFile(new File(systemDir, "batterystats.bin"));mBatteryStatsHistory = new BatteryStatsHistory(this, systemDir, mHistoryBuffer);}mCheckinFile = new AtomicFile(new File(systemDir, "batterystats-checkin.bin"));mDailyFile = new AtomicFile(new File(systemDir, "batterystats-daily.xml"));...mHandler = new MyHandler(handler.getLooper());...initTimersAndCounters();...initTimes(uptimeUs, realtimeUs);...}
2.2.1 初始化全局Timer

--javascripttypescriptshellbashsqljsonhtmlcssccppjavarubypythongorustmarkdown

    void initTimes(long uptimeUs, long realtimeUs) {mStartClockTimeMs = mClocks.currentTimeMillis();mOnBatteryTimeBase.init(uptimeUs, realtimeUs);mOnBatteryScreenOffTimeBase.init(uptimeUs, realtimeUs);mRealtimeUs = 0;mUptimeUs = 0;mRealtimeStartUs = realtimeUs;mUptimeStartUs = uptimeUs;}
2.2.2 初始化Uid进程Timer

--javascripttypescriptshellbashsqljsonhtmlcssccppjavarubypythongorustmarkdown

        public Uid(BatteryStatsImpl bsi, int uid, long elapsedRealtimeMs, long uptimeMs) {mBsi = bsi;mUid = uid;/* Observer list of TimeBase object in Uid is short */mOnBatteryBackgroundTimeBase = new TimeBase(false);mOnBatteryBackgroundTimeBase.init(uptimeMs * 1000, elapsedRealtimeMs * 1000);/* Observer list of TimeBase object in Uid is short */mOnBatteryScreenOffBackgroundTimeBase = new TimeBase(false);mOnBatteryScreenOffBackgroundTimeBase.init(uptimeMs * 1000, elapsedRealtimeMs * 1000);mUserCpuTime = new LongSamplingCounter(mBsi.mOnBatteryTimeBase);mSystemCpuTime = new LongSamplingCounter(mBsi.mOnBatteryTimeBase);mCpuActiveTimeMs = new LongSamplingCounter(mBsi.mOnBatteryTimeBase);mCpuClusterTimesMs = new LongSamplingCounterArray(mBsi.mOnB
http://www.yayakq.cn/news/358473/

相关文章:

  • 长沙网站排名WordPress上传ssl证书
  • 深圳网站建设软件开发公司排名公司网络组建方案
  • 杂志媒体网站建设方案深圳网站建设哪家公司好
  • 用dw如何做网站首页如何做好网站建设前期网站规划
  • 陕西做网站找谁上海工商网查询官网
  • 闽侯县住房和城乡建设局网站优站点网址收录网
  • 国际贸易网站建设百度大数据官网入口
  • 免费门户网站搭建网站建设功能定位怎么写
  • 如何拥有自己的网站域名wordpress模板调用文件夹下
  • 网站建设征税标准赣州公司做网站
  • 3g微网站是什么徐州圣道网络科技有限公司
  • 网站上海备案网站建设怎么做
  • 网站建设的岗位职责线上视频剪辑培训班
  • sns社交网站 有哪些单页网站如何优化
  • html做的好看的网站网站默认图片素材
  • 建设网站公司兴田德润i优惠吗本网站只做信息展示不提供在线交易
  • 网站建设三剑客精准营销名词解释
  • 百度推广 做网站房产中介网站开发费用
  • 麦壳云网站建设模板建站和自助建站
  • 好看的公司网站软件开发工资一般多少深圳
  • 聚合猫网站建设凡客诚品官网的关闭原因
  • 电子商务网站建设目的今天的新闻内容
  • 中国建设银行网站个人客户官网带登录网站模板
  • 学校网站建设所使用的技术滕州市做淘宝网站的
  • 陕西省西安市建设局网站国际新闻最新消息战争
  • 网站呢建设深圳品牌网站设计
  • 卡盟做网站厦门网站建设价
  • seo推广的网站和平台有哪些提升网站建设
  • 做淘宝相关网站免费搭建个人网页
  • 广东装饰公司网站建设网站h5什么意思