关闭具有活动线程的服务

时间:2010-02-10 03:54:54

标签: android

当我加载我的应用程序时,我还加载了Android服务,帮助我从互联网上下载文件。

用户在任何给定时间可能有1次或更多次下载,所有这些都在由服务管理的自己的线程中。

如果用户按下主页按钮我不会破坏服务但是让它运行,但是,如果用户按下后退按钮,我会停止()服务,因为我觉得这是正确的做法(用户不希望运行杂散服务)。

除非有尚未完成的杂散线程(如果互联网连接不活动等,可能会发生这种情况),这样就行了。

我怎么能管理这个?我怎么能停止所有的线程,因为我没有引用它们......或者以某种方式命令android在所有线程完成且我的应用程序关闭后停止我的服务?

1 个答案:

答案 0 :(得分:1)

每次下载时不要分叉线程。将作业发布到工作队列(例如,LinkedBlockingQueue)并让线程池解决它。使该队列成为优先级队列,您可以安排在该队列上发布作业,以告知后台线程在完成当前下载后停止。