我的活动被销毁后(甚至在应用程序退出后)我需要能够访问对象。
该对象是一个AAC解码器,如果用户回家或在应用程序中停留在后台播放。但是,当退出活动/应用程序时,对象将丢失。这意味着如果aac流正在播放,则无法停止播放(没有重启设备),随后访问应用程序只是将流层叠在最后一个上面。
我考虑过将对象添加到服务中,但是我不知道这是如何工作的,或者它是否是一个好主意。我还认为答案可能在于静态变量,但我假设一旦应用程序退出(或强制退出/杀死内存/其他),即使这些对象也会丢失。
我用于aac解码器的库是http://code.google.com/p/aacdecoder-android(如果有帮助的话)。
目前我正在完全播放服务中的流。这解决了上面的问题,但是我需要能够在应用程序运行时(以及用户将来访问应用程序时)更新UI。所以这是一个问题。我意识到围绕这个的方式是使用广播意图,但我想知道它是否比必要的更复杂。
有什么方法吗?
谢谢。
答案 0 :(得分:2)
我考虑过将对象添加到服务中,但我不知道这是如何工作的,或者它是否是一个好主意。
这不仅是一个好主意,而且是您唯一真正的选择。 Here is a sample project显示(假)音频客户端向处理播放的(假)音频服务发送命令,并向Android指示该服务是用户前景体验的一部分。
我还认为答案可能在于静态变量,但我假设一旦应用程序退出(或强制退出/杀死内存/其他),即使这些对象也会丢失。
一旦您的进程终止,对象就会消失。当然,音频播放也是如此。
服务实际上是操作系统的标记,表示您的代码仍在运行,因此Android不太可能终止您的进程以释放RAM以运行其他应用程序。将其标记为前台用户体验的一部分可进一步降低(但不能消除)Android终止流程的几率。
我意识到解决这个问题的方法是使用广播意图,但我想知道它是否比必要的更复杂。
它没有比广播简单得多。这不是您唯一的选择 - 您可以使用Messenger
或PendingIntent
或其他一些技巧。
有什么方法吗?
为什么你想要“找到”正确的答案?