线程的生命周期(f.i.考虑播放音乐的线程)从以下开始:
什么时候会破坏线程? 何时使用Service和UI less Fragment进行后台任务?
答案 0 :(得分:3)
活动=>直到android杀死你的进程或你的线程的run方法返回。
UI less Fragment =>与上述相同。
服务已启动=>直到调用stopSelf
或stopService
或者线程的run方法返回。
binded =>直到所有客户端解除绑定或线程的run方法返回。
何时使用Service和UI less Fragment作为后台任务?
服务=>长时间运行,无论是否有任何UI。
UI less后台任务的片段=>它是一种设计模式,用于存储您的对象,并在重新创建活动时阻止创建另一个对象(或在您的上下文中创建另一个线程)。在此模式中,无论是否重新创建活动,您都可以访问线程引用。例如,如果你用onCreate
方法声明你的线程,如果你改变方向5次你创建5个不同的线程,这可能会导致内存泄漏。
一句话中的所有上述情况是:
线程运行直到android杀死进程或线程从其run方法返回。
答案 1 :(得分:0)
线程何时被销毁?
来自文档:
当应用程序组件启动且应用程序没有运行任何其他组件时,Android系统会使用单个执行线程为应用程序启动新的Linux进程。默认情况下,同一应用程序的所有组件都在同一进程和线程(称为“主”线程)
中运行...但是,您可以安排应用程序中的不同组件在单独的进程中运行,并且可以为任何进程创建其他线程。
启动应用程序时,系统会为应用程序创建一个执行线程,称为“main”。此线程非常重要,因为它负责将事件分派给适当的用户界面小部件,包括绘图事件。
由于上面描述的单线程模型,对于您不应阻止UI线程的应用程序UI的响应性至关重要。如果您要执行的操作不是即时的,则应确保在单独的线程(“后台”或“工作线程”)中执行它们。
无论如何,您应该阅读整篇文档page。