这次做的东西还是比较简单的,但同时也有性能消耗,不过暂时先这样吧。我希望在设备的详情中增加一个性能标签,如下图:
增加标签
这里首先先要在详情界面增加一个标签,所以在control-panes-controller.js文件中增加标签代码:
{
title: gettext('Performance'),
icon: 'fa-dashboard fa-fw color-pink',
templateUrl: 'control-panes/memory/memory.jade',
filters: ['native', 'web']
}
当然这边为了引用原有的图标,所以使用Performance这个标签,但其中界面样式已经是自定义的memory.jade了。所以我们需要新建一个memory文件夹。
.
├── echarts.min.js
├── index.js
├── memory.css
├── memory.jade
├── memory-controller.js
├── memory-spec.js
所以基本上这里实现完了之后整个功能就可以用了。
实现
在memory.jade的模版里需要引用我们要用的js以及页面样式
.widget-container.fluid-height.stf-cpu(ng-controller='MemoryCtrl')
.widget-content.padded
接下来就是最核心的获取数据的代码了
function getMemoryData(){
var command = "dumpsys meminfo package name | grep TOTAL"
var number_count = 0
$scope.result = null
$scope.command = ''
$scope.control.shell(command)
.progressed(function(result) {
console.log("this is progressed")
$scope.result = result
$scope.data = result.data.join('')
$scope.$digest()
if ($scope.data== null || $scope.data== undefined || $scope.data== ''){
return
}
for (var i=0;i
{
var b = $scope.data.split(/\s+/)[i]
if (b ==="TOTAL")
{
number_count = i
}
}
memory_data = $scope.data.split(/\s+/)[number_count+1]
console.log("in getMemoryData"+memory_data)
})
return memory_data
}
当然这种方式效率不高,而且影响性能,后期会用java单独写的性能sdk替换掉。在echarts中还有一段magic code。这个代码就是为了在结果图表上能有一定的结果展现,否则就是空白。开始是真心没有看懂。
for (var i = 1; i < 100; i++) {
// var hh= (new Date()).getSeconds()
date.push(count+"s");
data.push(0);
}
效果
直接看最终结果吧。