了解android服务

时间:2011-09-29 19:24:25

标签: android

来自here

它说Service不是一个单独的进程,它不是一个线程。 但它怎么能“应用程序的设施告诉系统它想要在后台做些什么”?

如果不是进程或线程,如何在后台完成某些事情?

2 个答案:

答案 0 :(得分:1)

服务或多或少是一个可能长期存在的Android对象。换句话说,Android将为您实例化一个服务对象,并为您保持活着,直到您告诉Android您已完成它。

服务通常会启动后台线程来执行某项任务。完成任务后,他们会告诉Android该服务可以停止。一旦您的服务停止,Android将在其上调用onDestroy。现在Android知道您的服务已经完成,如果您的应用程序的其余部分未运行,Android可能会决定销毁您的应用程序用于回收内存的进程。自从您的服务运行以来,它没有这样做。

以这种方式思考(注意,有些事情被遗漏以至于没有压倒你):

  1. Android会创建您的服务实例
  2. Android在您的服务上调用onStart并启动一个帖子
  3. 执行返回到Android,它看到您的服务仍在运行,因此它不会调用onDestroy
  4. 有些时间过去了你的背景工作
  5. 您在服务上调用stopService或服务未绑定
  6. Android现在可以销毁和收集服务对象
  7. Android会在您的服务上调用onDestroy,并将其从自己的内部运行服务列表中删除

答案 1 :(得分:0)

  

如果不是进程或线程,如何在后台完成某些事情?

简单,不是一个过程,而是某些过程的一部分。这意味着很可能只有一个流程可以处理系统中的所有服务,类似于在家庭活动中处理小部件的方式。