如何找到我自己的服务?
How to find my own service?
我想在 activity 中找到我自己的服务 (RadarService
) -- 检查该服务是否 运行。
但是命名有点混乱,我迷路了。为了启动服务,我创建了意图:
this.radarIntent = new Intent(this, typeof(RadarService));
所以我试图从这个意图中提取服务的名称并将其用于比较——但是 Class
属性 returns class 的名称意图本身,Type
属性 是空的。
好的,所以我尝试使用 typeof(RadarService).ToString()
——这给了我字符串 MyNamespace.RadarService
,很好。但是,当我尝试将它与 运行 服务列表匹配时,我失败了,因为我的服务被列为 md5--here-comes-md5-hash--.RadarService
(它在 [= 中设置为 ClassName
和 ShortClassName
19=]).
那么如何找到我自己的服务呢?
typeof
将给 C#
类型/名称,你想要自动生成的 Java
Android Callable Wrapper class 该 C# 类型,因此您可以获得它的 CanonicalName
.
Java.Lang.Class.FromType(typeof(WhosebugService)).CanonicalName)
示例:
var intent = new Intent(this, typeof(WhosebugService));
StartService(intent);
var serviceName = Java.Lang.Class.FromType(typeof(WhosebugService)).CanonicalName;
var manager = (ActivityManager)GetSystemService(ActivityService);
foreach (var item in manager.GetRunningServices(int.MaxValue))
{
if (item.Service.ClassName == serviceName)
Log.Debug("SO", "Service is running!!!");
}
您可以避免 Xamarin.Android
基于自动 MD5 的 Java class 命名,方法是通过基于 ACW [=] 的 Name
参数对名称进行硬编码34=] 属性:
[Service(Label = "WhosebugService", Name="com.sushihangover.WickedApp.WhosebugService")]
[IntentFilter(new String[] { "com.sushihangover.WhosebugService" })]
public class WhosebugService : Service
{
~~~
}
现在您的服务 Java class 名称将是 com.sushihangover.WickedApp.WhosebugService
而不是 md58b0fd40f68fa0d8c16b76771789ed62a.WhosebugService
我想在 activity 中找到我自己的服务 (RadarService
) -- 检查该服务是否 运行。
但是命名有点混乱,我迷路了。为了启动服务,我创建了意图:
this.radarIntent = new Intent(this, typeof(RadarService));
所以我试图从这个意图中提取服务的名称并将其用于比较——但是 Class
属性 returns class 的名称意图本身,Type
属性 是空的。
好的,所以我尝试使用 typeof(RadarService).ToString()
——这给了我字符串 MyNamespace.RadarService
,很好。但是,当我尝试将它与 运行 服务列表匹配时,我失败了,因为我的服务被列为 md5--here-comes-md5-hash--.RadarService
(它在 [= 中设置为 ClassName
和 ShortClassName
19=]).
那么如何找到我自己的服务呢?
typeof
将给 C#
类型/名称,你想要自动生成的 Java
Android Callable Wrapper class 该 C# 类型,因此您可以获得它的 CanonicalName
.
Java.Lang.Class.FromType(typeof(WhosebugService)).CanonicalName)
示例:
var intent = new Intent(this, typeof(WhosebugService));
StartService(intent);
var serviceName = Java.Lang.Class.FromType(typeof(WhosebugService)).CanonicalName;
var manager = (ActivityManager)GetSystemService(ActivityService);
foreach (var item in manager.GetRunningServices(int.MaxValue))
{
if (item.Service.ClassName == serviceName)
Log.Debug("SO", "Service is running!!!");
}
您可以避免 Xamarin.Android
基于自动 MD5 的 Java class 命名,方法是通过基于 ACW [=] 的 Name
参数对名称进行硬编码34=] 属性:
[Service(Label = "WhosebugService", Name="com.sushihangover.WickedApp.WhosebugService")]
[IntentFilter(new String[] { "com.sushihangover.WhosebugService" })]
public class WhosebugService : Service
{
~~~
}
现在您的服务 Java class 名称将是 com.sushihangover.WickedApp.WhosebugService
而不是 md58b0fd40f68fa0d8c16b76771789ed62a.WhosebugService