服务线程被破坏

时间:2011-05-21 03:22:42

标签: java android multithreading

我有一个名为Service的安卓MyService

我有一个Activity,有两个按钮(启动服务/停止服务)。

当用户点击“开始服务”按钮时,使用

启动MyService
startService(new Intent(this, MyService.class));

当用户点击“停止服务”按钮时,使用

停止MyService
stopService(new Intent(this, MyService.class));

MyService我创建了Thread T,执行一些长时间运行的任务。

我的问题是:如果Service被销毁,即使T仍在运行,{{1}}也会被销毁吗?

1 个答案:

答案 0 :(得分:2)

不,结束您明确创建的线程不是Android框架的责任。您需要扩展onDestroy()。以下是此方法的javadoc:

  

由系统调用以通知服务它已不再使用且正在被删除。该服务应该清理它所拥有的资源(线程,注册接收器等)。返回后,将不再有对此Service对象的调用,它实际上已经死了。不要直接调用此方法。

我还建议你让线程使用Interrupts,以便你可以优雅地结束它。