Cod*_*ody 29 java service multithreading android
什么时候应该使用线程或服务?
它们应该用于身份验证吗?例如,在我的应用程序中,我正在考虑使用线程或服务(我通过Active Directory进行身份验证.)
你有什么时候使用它们的例子吗?
Jim*_*myB 49
更新: Android文档似乎现在包含相应的说明,请参阅http://developer.android.com/reference/android/app/Service.html#WhatIsAService.
原始答案:
在Android中,a Service不提供任何并发执行("在后台运行").它实际上更像是一个简单的Java对象,它只是通过Android系统而不是你的应用程序来实例化(和管理)new.
因此,服务最重要的属性不是延迟工作量; 这可以通过简单的线程实现.
使服务对象与众不同的是它在Android系统中作为服务注册.这让系统知道这个对象提供某种服务,应该尽可能长时间保持活动,或者直到它停止.普通应用程序线程对Android系统没有这种特殊含义,并且由系统自行决定更加慷慨地终止.
因此,如果您只需要在应用程序/ Activity处于活动状态时继续执行某些后台活动,则线程可以执行您所需的操作.
如果你需要一个保持活动的组件,即使在一段时间之后,Android系统决定Activities从内存中移除你的内存,你也应该去寻找服务,甚至是"前台服务",这被认为更重要由系统,甚至不太可能终止回收资源.
当然,如果需要,Service还可以使对象包含一个或多个Thread实例,这些实例可以与Service对象本身一样长.
编辑:
哦,加号:如果你想向其他应用程序提供一些服务,那么服务当然是要走的路,这些服务只能"绑定"到服务上.
Pat*_*fka 26
应该在长时间运行的进程中使用一个线程来阻止UI更新.如果它超过一两秒,您可能希望将其放入后台线程并通过对话框或微调器等通知用户.如果锁定UI线程超过5秒,操作系统将提示用户选择"终止或等待"选项.
服务不在单独的线程上运行,因此它将阻止UI,但您可以在服务中生成新线程.服务更多地用于某个间隔应该发生的事情,或者在没有显示UI的情况下继续运行/检查某些事情.
| 归档时间: |
|
| 查看次数: |
17203 次 |
| 最近记录: |