"Android N 7.1.1" activitymanagerservice Get CPU status
Last Update:2017-06-19
Source: Internet
Author: User
<span id="Label3"></p><pre><span style="color: #0000ff"><span style="color: #0000ff">void</span></span><span style="color: #000000"><span style="color: #000000">Updatecpustatsnow () {</span></span><span style="color: #0000ff"><span style="color: #0000ff">synchronized</span></span><span style="color: #000000"><span style="color: #000000">(mprocesscputracker) {mprocesscpumutexfree.set (</span></span><span style="color: #0000ff"><span style="color: #0000ff">false</span></span><span style="color: #000000"><span style="color: #000000">); </span></span><span style="color: #0000ff"><span style="color: #0000ff">Final</span></span> <span style="color: #0000ff"><span style="color: #0000ff">Long</span></span>now =<span style="color: #000000"><span style="color: #000000">Systemclock.uptimemillis (); </span></span><span style="color: #0000ff"><span style="color: #0000ff">Boolean</span></span>Havenewcpustats =<span style="color: #0000ff"><span style="color: #0000ff">false</span></span><span style="color: #000000"><span style="color: #000000">; </span></span><span style="color: #0000ff"><span style="color: #0000ff">if</span></span>(monitor_cpu_usage &&<span style="color: #000000"><span style="color: #000000">Mlastcputime.get ()</span></span>< (now-<span style="color: #000000"><span style="color: #000000">Monitor_cpu_min_time)) {mlastcputime.set (now); Mprocesscputracker.update (); </span></span><span style="color: #0000ff"><span style="color: #0000ff">if</span></span><span style="color: #000000"><span style="color: #000000">(mprocesscputracker.hasgoodlaststats ()) {havenewcpustats</span></span>=<span style="color: #0000ff"><span style="color: #0000ff">true</span></span><span style="color: #000000"><span style="color: #000000">; </span></span><span style="color: #008000"><span style="color: #008000">//</span></span><span style="color: #008000"><span style="color: #008000">slog.i (TAG, mprocesscpu.printcurrentstate ()); </span></span><span style="color: #008000"><span style="color: #008000">//</span></span><span style="color: #008000"><span style="color: #008000">slog.i (TAG, "total CPU usage:"</span></span><span style="color: #008000"><span style="color: #008000">//</span></span><span style="color: #008000"><span style="color: #008000">+ mprocesscpu.gettotalcpupercent () + "%"); </span></span><span style="color: #008000"><span style="color: #008000">//</span></span><span style="color: #008000"><span style="color: #008000">Slog The CPU usage if</span> the property is Set.</span> <span style="color: #0000ff"><span style="color: #0000ff">if</span></span>("true". equals (systemproperties.get ("events.cpu"<span style="color: #000000"><span style="color: #000000">))) { </span></span><span style="color: #0000ff"><span style="color: #0000ff">int</span></span>user =<span style="color: #000000"><span style="color: #000000">Mprocesscputracker.getlastusertime (); </span></span><span style="color: #0000ff"><span style="color: #0000ff">int</span></span>system =<span style="color: #000000"><span style="color: #000000">Mprocesscputracker.getlastsystemtime (); </span></span><span style="color: #0000ff"><span style="color: #0000ff">int</span></span>Iowait =<span style="color: #000000"><span style="color: #000000">Mprocesscputracker.getlastiowaittime (); </span></span><span style="color: #0000ff"><span style="color: #0000ff">int</span></span>IRQ =<span style="color: #000000"><span style="color: #000000">Mprocesscputracker.getlastirqtime (); </span></span><span style="color: #0000ff"><span style="color: #0000ff">int</span></span>SOFTIRQ =<span style="color: #000000"><span style="color: #000000">Mprocesscputracker.getlastsoftirqtime (); </span></span><span style="color: #0000ff"><span style="color: #0000ff">int</span></span>Idle =<span style="color: #000000"><span style="color: #000000">Mprocesscputracker.getlastidletime (); </span></span><span style="color: #0000ff"><span style="color: #0000ff">int</span></span>Total = user + system + iowait + IRQ + SOFTIRQ +<span style="color: #000000"><span style="color: #000000">idle; </span></span><span style="color: #0000ff"><span style="color: #0000ff">if</span></span>(total = = 0) Total = 1<span style="color: #000000"><span style="color: #000000">; Eventlog.writeevent (eventlogtags.cpu, (user</span></span>+system+iowait+irq+softirq) * 100)/<span style="color: #000000">total <span style="color: #000000">, (user</span></span>* 100)/<span style="color: #000000">total <span style="color: #000000">, (system</span></span>* 100)/<span style="color: #000000">total <span style="color: #000000">, (iowait</span></span>* 100)/<span style="color: #000000">total <span style="color: #000000">, (irq</span></span>* 100)/<span style="color: #000000">total <span style="color: #000000">, (softIrq</span></span>* 100)/<span style="color: #000000">total <span style="color: #000000">); } } } </span></span><span style="color: #0000ff"><span style="color: #0000ff">Final</span></span>Batterystatsimpl bstats =<span style="color: #000000"><span style="color: #000000">Mbatterystatsservice.getactivestatistics (); </span></span><span style="color: #0000ff"><span style="color: #0000ff">synchronized</span></span><span style="color: #000000"><span style="color: #000000">(bstats) {</span></span><span style="color: #0000ff"><span style="color: #0000ff">synchronized</span></span><span style="color: #000000"><span style="color: #000000">(mpidsselflocked) {</span></span><span style="color: #0000ff"><span style="color: #0000ff">if</span></span><span style="color: #000000"><span style="color: #000000">(havenewcpustats) {</span></span><span style="color: #0000ff"><span style="color: #0000ff">if</span></span><span style="color: #000000"><span style="color: #000000">(bstats.startaddingcpulocked ()) {</span></span><span style="color: #0000ff"><span style="color: #0000ff">int</span></span>Totalutime = 0<span style="color: #000000"><span style="color: #000000">; </span></span><span style="color: #0000ff"><span style="color: #0000ff">int</span></span>Totalstime = 0<span style="color: #000000"><span style="color: #000000">; </span></span><span style="color: #0000ff"><span style="color: #0000ff">Final</span></span> <span style="color: #0000ff"><span style="color: #0000ff">int</span></span>N =<span style="color: #000000"><span style="color: #000000">Mprocesscputracker.countstats (); </span></span><span style="color: #0000ff"><span style="color: #0000ff"></span> for</span>(<span style="color: #0000ff"><span style="color: #0000ff">int</span></span>i=0; i<n; i++<span style="color: #000000"><span style="color: #000000">) {processcputracker.stats St</span></span>=<span style="color: #000000"><span style="color: #000000">Mprocesscputracker.getstats (i); </span></span><span style="color: #0000ff"><span style="color: #0000ff">if</span></span>(!<span style="color: #000000"><span style="color: #000000">St.working) {</span></span><span style="color: #0000ff"><span style="color: #0000ff">Continue</span></span><span style="color: #000000"><span style="color: #000000">; } Processrecord PR</span></span>=<span style="color: #000000"><span style="color: #000000">Mpidsselflocked.get (st.pid); Totalutime</span></span>+=<span style="color: #000000"><span style="color: #000000">st.rel_utime; Totalstime</span></span>+=<span style="color: #000000"><span style="color: #000000">st.rel_stime; </span></span><span style="color: #0000ff"><span style="color: #0000ff">if</span></span>(pr! =<span style="color: #0000ff"><span style="color: #0000ff">NULL</span></span><span style="color: #000000"><span style="color: #000000">) {BatteryStatsImpl.Uid.Proc PS</span></span>=<span style="color: #000000"><span style="color: #000000">pr.curprocbatterystats; </span></span><span style="color: #0000ff"><span style="color: #0000ff">if</span></span>(ps = =<span style="color: #0000ff"><span style="color: #0000ff">NULL</span></span>|| !<span style="color: #000000"><span style="color: #000000">ps.isactive ()) {pr.curprocbatterystats</span></span>= PS =<span style="color: #000000"><span style="color: #000000">bstats.getprocessstatslocked (pr.info.uid, pr.processname); } ps.addcputimelocked (st.rel_utime, st.rel_stime); Pr.curcputime</span></span>+ = St.rel_utime +<span style="color: #000000"><span style="color: #000000">st.rel_stime; } </span></span><span style="color: #0000ff"><span style="color: #0000ff">Else</span></span><span style="color: #000000"><span style="color: #000000">{BatteryStatsImpl.Uid.Proc PS</span></span>=<span style="color: #000000"><span style="color: #000000">st.batterystats; </span></span><span style="color: #0000ff"><span style="color: #0000ff">if</span></span>(ps = =<span style="color: #0000ff"><span style="color: #0000ff">NULL</span></span>|| !<span style="color: #000000"><span style="color: #000000">ps.isactive ()) {st.batterystats</span></span>= PS =<span style="color: #000000"><span style="color: #000000">bstats.getprocessstatslocked (bstats.mapuid (st.uid), st.name); } ps.addcputimelocked (st.rel_utime, st.rel_stime); } } </span></span><span style="color: #0000ff"><span style="color: #0000ff">Final</span></span> <span style="color: #0000ff"><span style="color: #0000ff">int</span></span>Usertime =<span style="color: #000000"><span style="color: #000000">Mprocesscputracker.getlastusertime (); </span></span><span style="color: #0000ff"><span style="color: #0000ff">Final</span></span> <span style="color: #0000ff"><span style="color: #0000ff">int</span></span>SystemTime =<span style="color: #000000"><span style="color: #000000">Mprocesscputracker.getlastsystemtime (); </span></span><span style="color: #0000ff"><span style="color: #0000ff">Final</span></span> <span style="color: #0000ff"><span style="color: #0000ff">int</span></span>Iowaittime =<span style="color: #000000"><span style="color: #000000">Mprocesscputracker.getlastiowaittime (); </span></span><span style="color: #0000ff"><span style="color: #0000ff">Final</span></span> <span style="color: #0000ff"><span style="color: #0000ff">int</span></span>Irqtime =<span style="color: #000000"><span style="color: #000000">Mprocesscputracker.getlastirqtime (); </span></span><span style="color: #0000ff"><span style="color: #0000ff">Final</span></span> <span style="color: #0000ff"><span style="color: #0000ff">int</span></span>Softirqtime =<span style="color: #000000"><span style="color: #000000">Mprocesscputracker.getlastsoftirqtime (); </span></span><span style="color: #0000ff"><span style="color: #0000ff">Final</span></span> <span style="color: #0000ff"><span style="color: #0000ff">int</span></span>IdleTime =<span style="color: #000000"><span style="color: #000000">Mprocesscputracker.getlastidletime (); bstats.finishaddingcpulocked (totalutime, totalstime, usertime, systemTime, iowaittime, irqtime, softirqtime, idleTime); } } } </span></span><span style="color: #0000ff"><span style="color: #0000ff">if</span></span>(mlastwritetime < (now-<span style="color: #000000"><span style="color: #000000">Battery_stats_time)) {mlastwritetime</span></span>=<span style="color: #000000">now <span style="color: #000000">; Mbatterystatsservice.schedulewritetodisk (); } } } }</span></span></pre><p><p></p></p><p><p>"Android N 7.1.1" activitymanagerservice Get CPU status</p></p></span>