我有一个活动,该活动在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;
}
}
清单:
编辑:清单手册已删除
有人可以告诉我这是什么问题吗?
答案 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