在不杀死平板电脑的情况下从 Logcat 读取日志

Read logs from Logcat without killing the tablet

我必须从 Logcat 读取日志并通过 UDP 将它们发送到服务器。

对于这个任务,我使用了这个代码:https://github.com/chemik/logcatudp

该代码的主要问题是启动的异步线程进入 while(true) 循环,耗尽平板电脑的电池电量 运行。

有没有办法实时获取日志而不用像那样忙等待?希望不添加一些 sleep(some_milliseconds) 来减少问题?

使用某种事件侦听器会很棒,但我还没有找到。我在每个类似的库中都进行了搜索,但都没有成功。

代码如下:

while (true) {
    String sendingLine = "";
    // assume that log writes whole lines
    if (bufferedReader.ready()) {
        logLine = bufferedReader.readLine();
        sendingLine += logLine + System.getProperty("line.separator");
        DatagramPacket packet = new DatagramPacket(sendingLine.getBytes(), sendingLine.length(),
                        InetAddress.getByName(mConfig.mDestServer), mConfig.mDestPort);
        try {
            mSocket.send(packet);
            ...

有什么想法吗?谢谢

最后的答案是在 while(true) 循环中放置一个 Thread.sleep(10)。

这可能看起来很奇怪,但只有 10 毫秒的睡眠时间将电池使用率从近 40% 降低到 1%。