在不杀死平板电脑的情况下从 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%。
我必须从 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%。