我有这段代码来检查服务是否处于活动状态,但是我想知道是否有某种方式可以使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中使用的术语)或“ Delegate”,实现一种最常见的方式来让类传播事件/消息。 (C#中使用的术语)技术。
也有一些像PubNub这样的框架,您可以将其用作Nuget软件包,为您简化一切。
[了解更多概念的其他资源:Wikipedia,IBM。还有一些Android资源:Handlers,AsyncTasks,Parcelables。
不要忘记,您的更新EditText的事件可能不会在主UIThread上触发,因此除非您强制将更新行强制在UI Thread上运行,否则您将无法看到更改。