2017-08-10 281 views
1

我對Android編程很新穎,這就是爲什麼我需要您的建議。
Android(C#) - 傳入的udp廣播服務

現狀:
我建立一個Android應用程序(C#),藏漢作爲運行在樹莓派一個普通服務器應用程序(C++)。兩個程序都通過UDP通信。在服務器應用程序收到信號時,它發出一條Android應用程序正在監聽的廣播消息。一切正常,到Android設備入睡/閒置,這導致我的問題的時刻。

問:
我怎樣才能做到的是,Android應用程序監聽器仍然有效,當設備睡着了?我不期待任何解決方案,但任何建議,所以我不會浪費時間與錯誤的方法。

研究:
- 我瞭解並試圖服務,將繼續在後臺運行,但該服務也停止爲設備睡覺去了。
- 我閱讀了廣播接收器,它允許應用程序/服務獲得系統的更多信息。
- 我讀到了WAKELOCK,它可以讓CPU保持活着狀態,但是爲了我的目的,它應該始終保持「活躍狀態」,這樣會消耗很多能量。

代碼,我想在後臺運行:

public void AsyncReceive() 
{ 
    // ... 
    Task.Run(() => 
    { 
     while (this.isActive) 
     { 
      byte[] buffer = new byte[1]; 
      DatagramPacket incoming = new DatagramPacket(buffer, 
      buffer.Length); 

      try 
      { 
       sock.Receive(incoming); 
      } 
      catch (...) 
      { 
       // Exception handling goes here... 
      } 

      // Communicate with the Android application 
      this.FireBroadCastReceivedEvent(); 
     } 
    }); 
} 


編輯
我還需要通知一下收到的郵件應用程序(@the「FireBroadCastReceivedEvent() '代碼的一部分)。什麼會是一個很好的方法來做到這一點?

回答