在线程中停止Android服务

5

我有一个服务,在onCreate()期间启动了一个线程。该线程监控硬件(IOIO),并在断开连接时结束,因此它基本上是一个无限循环。从活动中停止服务可以正常工作,并且线程也会在onDestory()中停止。

我的问题是,如果线程死亡(例如由于异常),是否可以停止生成它的服务。

我尝试在线程代码内部使用stopSelf(),但服务不会停止。

谢谢 ps 我的第一篇文章,请原谅我可能缺少的规范。

2个回答

4

我认为你想要的是使用Handler。基本上,为你的服务创建一个处理程序(确保它是最终的,这样你就可以在所有线程中使用)。然后在另一个线程中,调用:

myServiceHandler.post(new Runnable(){
  public void run(){
    stopSelf();
  }
}

我有同样的问题,我尝试了这个解决方案。然而,我可以看到stopSelf()是从主线程执行的...但是什么也没有发生。之后服务仍然响应意图。有什么线索吗? - Klaas van Aarsen

0
那么将服务的 Intent 存储起来直接停止它呢? 在服务中:
private Intent thisIntent;

public int onStartCommand (Intent intent, int flags, int startId) {

    thisIntent = intent;

在服务内部的线程中:

stopService(thisIntent);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接