如何在安卓上制作服务的侦听器



我有此代码来检查服务是否处于活动状态,但我想知道 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;
}

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

实际上,Android或C#中没有任何内容,但是您可以实现一种最常见的方法,让类使用"Listener"(Android中使用的术语(或"委托"(C#中使用的术语(技术传播事件/消息。

还有一些框架,如PubNub,你可以将其用作Nuget包,为你简化一切。

更多了解该概念的资源:维基百科,IBM。 还有一些Android资源:处理程序,AsyncTasks,Parcelables。

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

最新更新