小编tva*_*ven的帖子

使用 top 测量 Android 应用程序中的 CPU 负载

我正在尝试使用top命令收集 Android 应用程序的 CPU 负载信息。虽然下面的代码提供了预期的输出,但顶部间隔应以(默认)3 秒的间隔更新其读数。然而,从 BufferedReader 读取时,每 3 秒会记录相同的输出。如果我将进程的运行时间包含在顶部的输出中,它也不会改变。所以看起来我只是一遍又一遍地获得每个间隔第一次运行的输出。

更新:看来上述问题只能在模拟器上重现。在物理设备上,顶部更新的 CPU 读数会在每个时间间隔内正确更新。

我尝试的另一件事是让 top 仅运行一次并收集该输出。虽然这有效,但启动 top 命令的开销看起来会扭曲读数。

我也很惊讶我没有找到现成的代码。既然对 /proc 目录的访问已受到限制,是否有更好的方法来检查应用程序的 CPU 负载?ps命令还提供 cpu 负载,但这提供了进程整个生命周期内运行所用时间的百分比,这是一个不太有用的值。

private void startCollecting() {
        Thread thread = new Thread() {
            @Override
            public void run() {
                try {
                    ProcessBuilder builder = new ProcessBuilder("top", "-q", "-oCMDLINE,%CPU", "-s2", "-b");
                    Process process = builder.start();
                    BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
                    String line;
                    while ((line = reader.readLine()) != null) {
                        Log.d(TAG, line);
                        processStatsLine(line);
                    }
                    reader.close(); …
Run Code Online (Sandbox Code Playgroud)

android cpu-usage

6
推荐指数
0
解决办法
932
查看次数

在 react-native-web 中访问底层 DOM 节点

在 react-native-web 中创建自定义组件时,我想访问我的 View 组件的底层 DOM 节点以添加/删除 eventListener。

class MyButton extends React.Component {    
  render() {
    return (
      <View ref={component => this._root = component}>
        <Text>{this.props.label}</Text>
      </View>
    )
  }
}
Run Code Online (Sandbox Code Playgroud)

我想像这样添加一个事件监听器:

this._root.dontknowthis.addEventListener('sn:focused', this._componentFocused);
Run Code Online (Sandbox Code Playgroud)

作为替代解决方案,我尝试直接渲染一个组件,然后附加 eventListener:

    <div
      ref={e => (this.el = e)}
      tabIndex="-1"
    >
      <WrappedComponent {...this.props} />
    </div>
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我可以附加一个 eventListener:

this.el.addEventListener('sn:focused', this._componentFocused);
Run Code Online (Sandbox Code Playgroud)

这有效,但我也想在这个组件上设置一个样式,最好是通过 props 传递的样式。这似乎不起作用,因为 react-native 样式与 DOM 节点样式不同。

那么这里最好的解决方案是什么?继续使用 div 组件并以某种方式重新格式化样式,还是使用 View 并以某种方式访问​​底层 DOM 节点以附加侦听器?

react-native react-native-web

5
推荐指数
0
解决办法
238
查看次数