2015-05-29 28 views
0

我必須從Logcat讀取日誌並通過UDP將它們發送到服務器。從Logcat讀取日誌而不殺死平板電腦

對於這個任務,我已經使用這個代碼:https://github.com/chemik/logcatudp

代碼的主要問題是,啓動異步線程進入一個while(true)循環排水渠數位板從長遠來看電池。

有沒有辦法讓實時獲取日誌,但沒有使用這樣的忙碌的等待?希望沒有增加一些睡眠(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); 
      ... 

任何想法?謝謝。

+0

爲什麼不登錄到文件並在一天中的某個特定時間發送文件,這樣您的互聯網連接將會減少,從而減少電池消耗。 – Skynet

+0

呃我們希望將logcat消息和系統日誌消息混合在一起,以便了解發生什麼而不是查看兩個不同的文件.. – Filnik

+0

因此寫入一個文件?或者使用時間戳作爲你的支點合併文件。 – Skynet

回答

0

最後,答案是在while(true)循環中放入Thread.sleep(10)。

這似乎很奇怪,但也只有10ms的睡眠時間,它將電池使用率從近40%降低到1%。