我对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()'部分代码)。有什么好办法呢?
答案 0 :(得分:0)
我认为您必须阅读以下链接:https://developer.android.com/training/run-background-service/index.html
希望你能找到你想要的东西。