【问题标题】:Android (C#) -- Service for incoming udp-broadcastsAndroid (C#) -- 传入 udp 广播的服务
【发布时间】:2017-08-10 15:49:06
【问题描述】:

我对 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();
        }
    });
}  


编辑
我还需要注意有关传入消息的应用程序(代码的@'FireBroadCastReceivedEvent()' 部分)。什么是这样做的好方法?

【问题讨论】:

    标签: c# android service broadcast wakelock


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-12
      • 2015-04-13
      • 2016-07-26
      • 2011-12-30
      • 1970-01-01
      相关资源
      最近更新 更多