大家知道,与FA相比,Service最大的不同在于它不提供用户交互界面,主要用于后台执行任务,比如:播放音乐、下载文件、等等,Service仍将在后台继续运行。由于Service是在主线程中运行的,因此,如果在Service中执行比较耗时的操作,开发者必须在Service中创建子线程来处理,以免阻塞主线程。
当应用中需要执行耗时操作时,究竟是在FA中创建子线程还是在Service中创建子线程来处理呢?强烈建议在Service中!这是因为,FA很容易被用户或系统销毁,如果在FA中创建子线程,那么当FA被销毁之后,不再持有该子线程的引用,从而不能再控制该子线程。此外,在一个FA中创建的子线程,在另一个FA中无法对其进行操作。但是Service就不同了,除非必须回收内存资源,否则系统不会停止或销毁Service。而且,Service是单实例的(在一个设备上,一个Service只存在一个实例),所有的FA都可以与Service进行关联,然后对Service中创建的子线程进行操作,即使FA被销毁了,重新创建FA之后,只要再次与Service建立关联就可以了。因此,在Service中创建子线程来处理耗时操作,就可以放心地销毁FA了。
所以,这道题的说法是错误的。



