Most visited

Recently visited

Added in API level 3

IntentService

public abstract class IntentService
extends Service

java.lang.Object
   ↳ android.content.Context
     ↳ android.content.ContextWrapper
       ↳ android.app.Service
         ↳ android.app.IntentService


IntentService是Service的基类,用于Service处理异步请求(表示为Intent )。 客户通过startService(Intent)呼叫发送请求; 该服务根据需要启动,使用工作线程轮流处理每个Intent,并在其停止工作时自行停止。

这个“工作队列处理器”模式通常用于卸载应用程序主线程中的任务。 IntentService类的存在是为了简化这种模式,并照顾机制。 要使用它,请扩展IntentService并实施onHandleIntent(Intent) IntentService将收到Intents,启动工作线程,并根据需要停止服务。

所有请求都在单个工作线程上处理 - 它们可能需要的时间(并且不会阻塞应用程序的主循环),但一次只能处理一个请求。

Developer Guides

有关如何创建服务的详细讨论,请阅读 Services开发人员指南。

也可以看看:

Summary

Inherited constants

From class android.app.Service
From class android.content.Context
From interface android.content.ComponentCallbacks2

Public constructors

IntentService(String name)

创建一个IntentService。

Public methods

IBinder onBind(Intent intent)

除非您为服务提供绑定,否则不需要实现此方法,因为默认实现返回null。

void onCreate()

服务第一次创建时由系统调用。

void onDestroy()

由系统调用以通知服务它已不再使用并正在被删除。

void onStart(Intent intent, int startId)

此方法已弃用。 改为实施onStartCommand(Intent, int, int)

int onStartCommand(Intent intent, int flags, int startId)

您不应该为您的IntentService重写此方法。

void setIntentRedelivery(boolean enabled)

设置意图重新传送偏好。

Protected methods

abstract void onHandleIntent(Intent intent)

该方法在工作线程上被请求处理。

Inherited methods

From class android.app.Service
From class android.content.ContextWrapper
From class android.content.Context
From class java.lang.Object
From interface android.content.ComponentCallbacks2
From interface android.content.ComponentCallbacks

Public constructors

IntentService

Added in API level 3
IntentService (String name)

创建一个IntentService。 由你的子类的构造函数调用。

Parameters
name String: Used to name the worker thread, important only for debugging.

Public methods

onBind

Added in API level 3
IBinder onBind (Intent intent)

除非您为服务提供绑定,否则不需要实现此方法,因为默认实现返回null。

Parameters
intent Intent: The Intent that was used to bind to this service, as given to Context.bindService. Note that any extras that were included with the Intent at that point will not be seen here.
Returns
IBinder Return an IBinder through which clients can call on to the service.

也可以看看:

onCreate

Added in API level 3
void onCreate ()

服务第一次创建时由系统调用。 不要直接调用这个方法。

onDestroy

Added in API level 3
void onDestroy ()

由系统调用以通知服务它已不再使用并正在被删除。 这个服务应该清理它所拥有的任何资源(线程,注册接收者等)。 返回后,将不会有更多的调用这个服务对象,它实际上已经死了。 不要直接调用这个方法。

onStart

Added in API level 3
void onStart (Intent intent, 
                int startId)

此方法已弃用。
改为实施onStartCommand(Intent, int, int)

Parameters
intent Intent
startId int

onStartCommand

Added in API level 5
int onStartCommand (Intent intent, 
                int flags, 
                int startId)

您不应该为您的IntentService重写此方法。 相反,覆盖onHandleIntent(Intent) ,当IntentService收到启动请求时系统会调用该系统。

Parameters
intent Intent: The Intent supplied to startService(Intent), as given. This may be null if the service is being restarted after its process has gone away, and it had previously returned anything except START_STICKY_COMPATIBILITY.
flags int: Additional data about this start request. Currently either 0, START_FLAG_REDELIVERY, or START_FLAG_RETRY.
startId int: A unique integer representing this specific request to start. Use with stopSelfResult(int).
Returns
int The return value indicates what semantics the system should use for the service's current started state. It may be one of the constants associated with the START_CONTINUATION_MASK bits.

也可以看看:

setIntentRedelivery

Added in API level 5
void setIntentRedelivery (boolean enabled)

设置意图重新传送偏好。 通常使用您的首选语义从构造函数中调用。

如果启用为true,则onStartCommand(Intent, int, int)将返回START_REDELIVER_INTENT ,因此如果此过程在onHandleIntent(Intent)返回之前onHandleIntent(Intent) ,则过程将重新启动并意向重新递送。 如果发送了多个意图,则只保证最近的意向重新发送。

如果启用为false(默认),则 onStartCommand(Intent, int, int)将返回 START_NOT_STICKY ,并且如果进程死亡,则Intent会与它一起死亡。

Parameters
enabled boolean

Protected methods

onHandleIntent

Added in API level 3
void onHandleIntent (Intent intent)

该方法在工作线程上被请求处理。 一次只处理一个Intent,但处理发生在与其他应用程序逻辑独立运行的工作线程上。 所以,如果这段代码需要很长时间,它会阻止对同一个IntentService的其他请求,但它不会阻塞其他任何东西。 当处理完所有请求后,IntentService会自行停止,因此您不应该调用stopSelf()

Parameters
intent Intent: The value passed to startService(Intent). This may be null if the service is being restarted after its process has gone away; see onStartCommand(Intent, int, int) for details.

Hooray!