何时在安卓中使用线程/服务?
何时应使用线程或服务?
它们是否应用于身份验证?例如,在我的应用程序中,我正在考虑使用线程或服务(我正在通过Active Directory进行身份验证)。
你有没有什么时候使用每个的例子?
何时应使用线程或服务?
它们是否应用于身份验证?例如,在我的应用程序中,我正在考虑使用线程或服务(我正在通过Active Directory进行身份验证)。
你有没有什么时候使用每个的例子?
更新:Android文档现在似乎包括相应的澄清,请参阅 http://developer.android.com/reference/android/app/Service.html#WhatIsAService。
原答:
在 Android 中,a 不提供任何并发执行(“在后台运行”)。它实际上更像是一个简单的Java对象,它只是通过Android系统实例化(和管理),而不是通过.Service
new
因此,服务最重要的属性不是延迟工作负载;这可以通过简单的线程来实现。
服务对象的特殊之处在于,它作为服务在 Android 系统中注册。这让系统知道这个对象提供了某种服务,应该尽可能长时间地保持活动状态,或者直到它被停止。正常的应用程序线程对Android系统没有这种特殊意义,并且将由系统自行决定更慷慨地终止。
因此,如果您需要仅在应用程序/处于活动状态时才进行一些后台活动,则线程可以执行您需要的操作。Activity
如果您需要一个保持活动状态的组件,即使过了一段时间,Android系统决定从内存中删除您,也不会被清除,您应该选择该服务,甚至是“前台服务”,系统认为它甚至更重要,甚至不太可能被终止以回收资源。Activities
当然,如果需要,还可以使对象包含一个或多个实例,然后这些实例可以像对象本身一样长地存在。Service
Thread
Service
编辑:
哦,另外:当然,如果您想向其他应用程序提供某些服务,那么服务是要走的路,这些服务只能“绑定”到服务。
应在长时间运行的进程中使用线程,该进程将阻止 UI 更新。如果超过一两秒,您可能希望将其放入后台线程中,并通过对话框或微调器或其他内容通知用户。如果将 UI 线程锁定超过 5 秒,操作系统将提示用户使用“终止或等待”选项。
服务不在单独的线程上运行,因此它将阻塞 UI,但你可以在服务中生成新线程。服务更多地用于应该在某个时间间隔内发生的事情,或者在没有显示UI时继续运行/检查某些事情。