现在更新的SDK版本服务类具有覆盖方法
int onStartCommand(Intent intent,int flags,int startId)
&安培;它取代了随Android 2.0(API级别5)引入的以下内容。
void onStart(Intent intent,int startid)
我的问题是:
更新 1. 2:清除:)
遵循snapcode清除标志 param的用例。默认情况下收到0,如果你的服务重新开始,那么它将收到带有我们从onStartCommand(..)方法返回的标志。
void readFlags(int flags) {
switch (flags) {
case START_FLAG_REDELIVERY:
case START_FLAG_RETRY:
// restarted by system, might be kill app form stack.
break;
default:
// on regular startService call from client.
}
}
和 startID 非常清楚,每当你调用stopSelf时你应该用这个startID调用,所以如果服务有多个客户端的运行请求,那么它不会终止服务,它只会停止为这个startID工作。它是由系统生成的,无需操纵:)。
3. 但是如何管理这个startID来调用stopSelf仍然是一个问题?任何人!!
答案 0 :(得分:1)
首先,文档明确表示不要自己调用这些方法,因此你可以在别处操作它们。
flags
int
:
有关此启动请求的其他数据。 值为0或START_FLAG_REDELIVERY
或START_FLAG_RETRY
的组合。
这些常量标志在同一页面中描述
我不清楚输入来自何处,但是您将该整数与按位OR组合,例如
return flags | START_REDELIVER_INTENT;
并且
startId
int
:
表示此特定启动请求的唯一整数。与stopSelfResult(int)
一起使用。
因此,id用于记录并获取服务的句柄以阻止它