我是Android应用程序开发的新手。我的第一个项目是创建一个调谐器,它需要录制音频并实时分析。
我已经在Android上阅读了很多关于后台操作的内容,但我无法决定使用什么:
Asynctask:Android文档说它应该保留用于简短的计算,但我需要分析数据超过几秒钟。
Intentservice:更适合长时间计算,但只要我想要一个按钮就无法停止。
工作人员线程:限制似乎与Asynctask类似。
在以下链接中我发现的一个例子与我想要做的类似。工作线程仍然可以作为长计算的好选择吗?使用带有标志的while循环来停止计算是否安全?
编辑:我已成功创建绑定服务。在此服务中,创建一个新线程来更新循环中的值,然后进行广播。但是当我从服务解除绑定时,线程继续运行。即使我关闭应用程序并重新启动它,该值仍将更新。
所以我回到了我最初的问题。这样的线程是如何停止的?
编辑:问题通过onUnbind()中激活的简单标志解决,该标志停止了线程内的循环。
答案 0 :(得分:0)
您实际上需要Service
,而不是IntentService
。您希望Service
能够在后台运行,并且可以通过Activity
进行控制(并且会在Activity
关闭后继续工作)。这是此类任务的通用架构。以下是Android的开源音乐播放器示例:
https://github.com/kreed/vanilla/blob/master/src/org/kreed/vanilla/PlaybackService.java