Android (C#) -- 用于传入 udp 广播的服务



我对Android编程很陌生,这就是为什么我需要你的建议。

现状:
我构建了一个Android应用程序(C#(以及一个在Raspberry Pi上运行的常规服务器应用程序(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(("部分(。这样做的好方法是什么?

我认为您必须阅读此链接:https://developer.android.com/training/run-background-service/index.html

希望你能找到你要找的东西。

最新更新