我正在编写一个涉及一个AudioTrack和一个AudioRecord的Android应用程序。它们运行在两个不同的线程中,即使应用程序在后台运行,它们都需要继续运行而不会在内存/ CPU不足时被杀死。我搜索了这个,我知道我可以使用AsyncTask(就像在音乐流应用程序中)。但是,我不确定怎么做,因为首先创建运行AudioTrack的线程(一旦按下主活动上的某个按钮),然后该线程将创建另一个运行AudioRecord的线程(通过创建Runnable)
答案 0 :(得分:1)
我搜索了这个,我知道我可以使用AsyncTask(就像在音乐流应用中一样)
没有。你的问题不是线程,而是过程。
即使应用程序在后台运行,它们都需要继续运行并且在内存/ CPU不足时不会被杀死
严格来说,这是不可能的。您将获得的最接近的将是Service
使用startForeground()
来表示它具有前景优先级。这样可以最大程度地降低Android因内存不足而终止进程的可能性,但不会消除它。
此外,请注意您需要打开CPU才能执行音频任务。反过来,这将需要WakeLock
。这将严重影响用户的电池,以至于您应该建议用户将设备放在充电器上。这对将来来说尤其重要,其中" Doze模式"即将到来的" M"如果设备闲置,不动,而不是充电器,Android版本将阻止您使用WakeLocks
。