Android服务 - 多次调用startService并导致值混淆...

时间:2011-06-18 21:46:36

标签: android android-service

我的代码中有一些条件调用,它启动相同的服务,不同的数据值通过bundle传递给该服务。 当我检查只满足一个条件时,服务适用于所有条件。 但是当2个或更多条件匹配时,它们会调用相同的服务,但捆绑中的数据值不同。 问题是当满足此方案时,第一次调用发送的值不会被替换为第二个条件以启动相同的服务。 所以服务的反应是错误的。

就像这样

if(some cond)
{
    some values in serivce intent bundle.startService(serviceintent1);
}
if(some cond)
{
    some data in intent bundle.startService(serviceintent1);
}

当满足两个条件时,调用startService两次。 但我在第二个条件startService调用中从第一个条件获取值。

在这个问题上帮助我......

2 个答案:

答案 0 :(得分:3)

onStartCommand中的返回类型是什么?

您应该了解服务的生命周期。 https://developer.android.com/reference/android/app/Service.html#ServiceLifecycle

我建议使用IntentService,因为它是为处理asyncron任务而设计的,它也是在一个工作线程中启动的。 http://developer.android.com/reference/android/app/IntentService.html

为了真正帮助您,您的服务代码非常重要:)

答案 1 :(得分:0)

看一下Bind service to activity in Android问题..讨论startservice和bindservice之间的区别..我想这可以解决你的问题。