如何在Android上监听服务

问题描述 投票:0回答:1

我有这段代码来检查服务是否处于活动状态,但是我想知道是否有某种方式可以使EditText显示服务的状态,而无需每秒查询一次,或者在单独的线程中进行查询,或者以某种方式链接吗?可以检测服务是否停止

private bool MiServicioEstaCorriendo(Class @class, Context contexto)
        {
            ActivityManager manager = (ActivityManager)contexto.GetSystemService(Context.ActivityService);
            foreach (ActivityManager.RunningServiceInfo service in manager.GetRunningServices(Integer.MaxValue))
            {
                if (@class.Name.Equals(service.Service.ClassName))
                {
                    Log.Info(typeof(BroadcastGps).Name, "MiServcicioEstaCorriendo: true");
                    return true;
                }
            }
            Log.Info(typeof(BroadcastGps).Name, "MiServcicioEstaCorriendo: false");
            return false;
        }
c# android xamarin.android
1个回答
0
投票

您基本上需要一种在应用程序的类之间传递事件/消息的方法。因此,这个问题可能归结于此类模式的Android&C#实现。 Xamarin.Forms有一个MessagingCenter类,但是由于您使用的是Xamarin.Native,因此您必须自己创建一些内容

[Android或C#实际上还没有内置,但是您可以使用“ Listener”(在Android中使用的术语)或“ Delegate”,实现一种最常见的方式来让类传播事件/消息。 (C#中使用的术语)技术。

也有一些像PubNub这样的框架,您可以将其用作Nuget软件包,为您简化一切。

[了解更多概念的其他资源:WikipediaIBM。还有一些Android资源:HandlersAsyncTasksParcelables

不要忘记,您的更新EditText的事件可能不会在主UIThread上触发,因此除非您强制将更新行强制在UI Thread上运行,否则您将无法看到更改。

© www.soinside.com 2019 - 2024. All rights reserved.