已执行StartService方法,但不会触发Service事件

时间:2018-12-12 06:26:08

标签: android xamarin service

我有一个活动,该活动在OnCreate方法中启动服务。 <?php $postdata = file_get_contents("php://input"); if (isset($postdata)) { $request = json_decode($postdata, true); echo $request->pid; } ?> 方法的执行没有任何错误,但是Service类中的所有事件均不会触发! 正如我在代码中看到的那样,我测试了显式和隐式两种模式来启动服务,但是结果都是一样的! 我的代码:

活动:

StartService

跟踪服务:

protected override void OnCreate(Bundle savedInstanceState)
{
    base.OnCreate(savedInstanceState);
    try
    {
        serviceToStart = new Intent(ApplicationContext, typeof(TrackService));
        StartService(serviceToStart);
    }
    catch(Exception e)
    {
        var ee = e;
    }
}

清单:

编辑:清单手册已删除

有人可以告诉我这是什么问题吗?

3 个答案:

答案 0 :(得分:0)

请在清单文件中提及您的服务。这是非常重要的一步,因为没有清单服务条目,您的服务类就不会启动。

下面的代码非常重要,这应该在清单文件中。

<service android:name=".TrackService" android:enabled="true"></service>

有关以下服务的更多说明,请参见下面的链接  -https://developer.android.com/training/run-background-service/create-service

答案 1 :(得分:0)

1)允许ServiceAttribute(以及构建过程)的属性设置清单条目,而无需进行手动更改:

[Service(IsolatedProcess = true, enabled = true)]

注意:如果希望/需要手动更改清单,则需要在ServiceAttribute中分配Name来硬编码完全合格的程序包和Java类名称,然后可以在您的程序中使用它。清单

2)启动服务时,请使用应用程序上下文和服务的C#类型来构建意图:

var serviceIntent = new Intent(ApplicationContext, typeof(TrackService));
StartService(serviceIntent);

答案 2 :(得分:0)

最后!我找到问题根了!但是,我不知道为什么会这样以及如何解决!

我总是在logcat中遇到此错误:

  

未找到实现void mono.android.Runtime.register的实现

部分删除了代码后,我发现问题是由IsolatedProcess属性引起的。只需删除它,代码就可以很好地工作。

注意:如您所见,也无需放置enabled属性进行服务。

[Service]
public class TrackService : Service