android有多少意图服务可以并行运行

时间:2016-11-29 11:39:48

标签: android intentservice

我有多个IntentService子类。任何人都可以告诉我有多少这样的意图服务可以并行运行。感谢

2 个答案:

答案 0 :(得分:0)

你可以并行启动来自IntentService的不同子类的任何实例,但实际上只有 N 服务将在 N 不属于核心的时刻运行如果我们并行运行超过 N 服务,那么他们的线程将进行上下文切换,其中所有正在运行的服务将共享时钟时间。如果你启动IntentService的相同子类的多个实例,那么它们将以串行方式运行,在这种情况下你需要使用Service类而不是IntentService来实现并行执行。

答案 1 :(得分:0)

IntentService如果来自同一个类,则不会并行运行。它们将按顺序运行。换句话说,如果您有一个名为IntentService的{​​{1}}从给定的网址下载文件,那么您就这样运行:

DownloadService

List<String> downloadUrls = getDownloadUrls(); Context ctx = getContext(); Intent baseIntent = new Intent(ctx, DownloadService.class); for(String url : downloadUrls) { Intent downloadService = new Intent(baseIntent); downloadService.putString("downloadUrl", url); ctx.startService(downloadService); } 会一次启动会发生什么。然后,第一个URL将传递给它,它将开始下载。然后,在完成之后,DownloadService将使用第二个网址。然后是第三个等等。这一切都按顺序进行。

现在,您可以使用名为DownloadService的第二个IntentService,类似地将文件上传到给定的网址。如果您使用不同的参数多次启动它,它也将按顺序运行到每个调用。 但是,它会与UploadService并行运行,因为它们是两个独立的DownloadService

编辑:至于限制数量。我确定有一个,但你可能会在你达到它之前耗尽内存(或者决定一百种不同的服务不是最好的做事方式)。