从线程中停止Android服务

时间:2011-11-08 14:44:00

标签: android multithreading android-service

我有一个服务,可以在onCreate()期间启动一个帖子。该线程正在监视硬件(IOIO),并在断开连接后结束,因此基本上是无限循环。从Activity停止服务工作正常,线程也停止(以onDestory()结束)。

我的问题是,如果线程死亡(比如因为异常),就可以停止产生它的服务。

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

谢谢 ps我的第一篇文章,请原谅我应该遵循的任何遗漏的惯例。

2 个答案:

答案 0 :(得分:3)

我认为你想要的是使用Handler。最后,为你的Sevrice创建一个处理程序(确保它是最终的,这样你就可以在所有线程中使用)。然后在你的另一个帖子中,打电话:

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

答案 1 :(得分:0)

如何存储服务的Intent并直接停止它? 在服务中:

private Intent thisIntent;

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

    thisIntent = intent;

在服务内部的线程中:

stopService(thisIntent);