我在Android应用程序中使用前台服务。我将覆盖服务的方法 onStartCommand ,如下所示:
public int onStartCommand(Intent intent, int flags, int startId) {
// doing my staff here
}
正如documentation所说:
每次客户端明确启动服务时由系统调用 通过调用startService(Intent),提供它提供的参数 以及表示开始请求的唯一整数标记。
并且
startId int:表示此特定请求的唯一整数 开始。与stopSelfResult(int)一起使用。
我正确使用该服务并且服务正常运行。
我的问题是:
每次启动服务时,startId都会随着文档的说明而增加。我不清楚的是startId增加的影响是什么?它会占用更多内存还是会对应用程序性能产生影响? (例如,如果startId增加超过1000?)
答案 0 :(得分:0)
这只是一个标记,就像startActivityByResult
中的请求ID一样。
如果您多次启动某项服务,您可以通过此令牌为每个服务设置一个句柄。
假设您呼叫启动服务两次,然后想要停止第二次呼叫!你将需要一些东西来引用第二个东西,这个ID是什么。
增加此ID无法成为内存泄漏的标志,也不仅仅是ID。但是,您需要在应用程序中多次启动服务的情况很少见。所以要照顾你做的事情。如果您真的不需要,请不要启动单个服务的多个实例。