Android 从Logcat读取日志,而不杀死平板电脑

Android 从Logcat读取日志,而不杀死平板电脑,android,udp,logcat,Android,Udp,Logcat,我必须从Logcat读取日志,并通过UDP将它们发送到服务器 对于此任务,我使用了以下代码: 该代码的主要问题是,启动的异步线程进入了一个while(true)循环,从长远来看会耗尽平板电脑的电池 有没有一种方法可以实时获取日志,但不需要像那样进行繁忙的等待?希望不增加一些睡眠(几毫秒)来减少问题 使用某种事件监听器会很好,但我还没有找到。我在每一个类似的图书馆里都搜索过,但都没有成功 代码如下: while (true) { String sendingLine = ""; /

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

对于此任务,我使用了以下代码:

该代码的主要问题是,启动的异步线程进入了一个while(true)循环,从长远来看会耗尽平板电脑的电池

有没有一种方法可以实时获取日志,但不需要像那样进行繁忙的等待?希望不增加一些睡眠(几毫秒)来减少问题

使用某种事件监听器会很好,但我还没有找到。我在每一个类似的图书馆里都搜索过,但都没有成功

代码如下:

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%。

为什么不登录到一个文件,并在一天中的某个时间发送文件,这样,您的internet连接将减少,从而消耗更少的电池。呃,我们希望将logcat消息和syslog消息混合在一起,以了解发生了什么,而无需查看两个不同的文件。那么,写入一个文件?或者使用时间戳作为轴心来合并文件。是的,我认为手动合并这两个文件可能是更好的解决方案