我對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() '代碼的一部分)。什麼會是一個很好的方法來做到這一點?