首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从onStopCommand返回会结束安卓服务吗?

从onStopCommand返回会结束安卓服务吗?
EN

Stack Overflow用户
提问于 2014-01-29 17:59:08
回答 1查看 1K关注 0票数 0

Android关于服务的文档说:“另一个应用程序组件可以启动一个服务,即使用户切换到另一个应用程序,它也会继续在后台运行。”

让我们假设Android服务在onStartCommand中生成一个线程或onStartCommand:

代码语言:javascript
复制
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
//asyncrhonous call-1
new SomeAsyncTask().execute();
//asynchronous call-2
new Thread(new Runnable(){//some runnable}).start();
//shouldn't service terminate here?
return Service.START_NOT_STICKY;
}

在上面的代码中,会立即遇到onStartCommand返回语句,因为它之前的两个语句是异步的。在这里生成的线程结束它们的执行之前,服务不应该终止吗?如果他们不是守护进程呢?

此外,在UI线程上执行服务(对IntentService略有混淆)时,我们需要在单独的线程中执行网络操作。因此,通常需要创建异步任务或不同的线程。有人能帮助我理解服务的执行吗?如果服务“继续在后台运行”的话?然后,从onStartCommand返回后,它会“运行”什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-29 18:28:35

因此,我怀疑在这里生成的线程结束其执行之前,服务不应该终止吗?

不是的。onStopCommand()返回并不表示服务正在被销毁。

如果一个服务“在后台继续运行”,那么在从onStartCommand返回之后,它会“运行”什么?

默认情况下没什么。它只是坐在那里,占用内存,对用户来说是一个普遍的麻烦。

如果您启动了一个服务,您需要有一个明确的计划,什么时候和如何停止该服务。服务可以通过调用stopSelf()本身或由其他调用stopService()的人停止。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21438946

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档