什么是线程的生命周期开始于:Activity,UI less Fragment,Service(已启动,绑定)?

时间:2014-09-28 15:56:20

标签: android multithreading android-fragments service

线程的生命周期(f.i.考虑播放音乐的线程)从以下开始:

  • 活动
  • UI less Fragment
  • 服务(已启动,已绑定)

什么时候会破坏线程? 何时使用Service和UI less Fragment进行后台任务?

2 个答案:

答案 0 :(得分:3)

活动=>直到android杀死你的进程或你的线程的run方法返回。

UI less Fragment =>与上述相同。

服务已启动=>直到调用stopSelfstopService或者线程的run方法返回。

binded =>直到所有客户端解除绑定或线程的run方法返回。

  

何时使用Service和UI less Fragment作为后台任务?

服务=>长时间运行,无论是否有任何UI。

UI less后台任务的片段=>它是一种设计模式,用于存储您的对象,并在重新创建活动时阻止创建另一个对象(或在您的上下文中创建另一个线程)。在此模式中,无论是否重新创建活动,您都可以访问线程引用。例如,如果你用onCreate方法声明你的线程,如果你改变方向5次你创建5个不同的线程,这可能会导致内存泄漏。

一句话中的所有上述情况是:

线程运行直到android杀死进程或线程从其run方法返回。

答案 1 :(得分:0)

线程何时被销毁?

来自文档:

  

当应用程序组件启动且应用程序没有运行任何其他组件时,Android系统会使用单个执行线程为应用程序启动新的Linux进程。默认情况下,同一应用程序的所有组件都在同一进程和线程(称为“主”线程)

中运行      

...但是,您可以安排应用程序中的不同组件在单独的进程中运行,并且可以为任何进程创建其他线程。

     

启动应用程序时,系统会为应用程序创建一个执行线程,称为“main”。此线程非常重要,因为它负责将事件分派给适当的用户界面小部件,包括绘图事件。

     

由于上面描述的单线程模型,对于您不应阻止UI线程的应用程序UI的响应性至关重要。如果您要执行的操作不是即时的,则应确保在单独的线程(“后台”或“工作线程”)中执行它们。

无论如何,您应该阅读整篇文档page