Android 多次使用同一服务

Android 多次使用同一服务,android,service,Android,Service,我即将完成我的应用程序,并注意到一个“错误”。因为如果用户按下启动服务的按钮,然后按下另一个同样启动服务但包含其他信息的按钮,服务将重新启动,第一次启动就消失了。他们不可能意味着我应该用相同的代码编写一百万个服务类,但使用其他名称?所以每个按钮都会启动每个服务,我希望至少不会 那么,是否有某种方法可以重复使用同一个服务并在服务中拥有多个服务?我认为这是一个糟糕的解释,但我希望至少有人明白我的意思,并想帮助我:) 谢谢 不确定您所说的不同服务是什么意思,但如果您只是根据按钮单击传递不同的信息,那么

我即将完成我的应用程序,并注意到一个“错误”。因为如果用户按下启动服务的按钮,然后按下另一个同样启动服务但包含其他信息的按钮,服务将重新启动,第一次启动就消失了。他们不可能意味着我应该用相同的代码编写一百万个服务类,但使用其他名称?所以每个按钮都会启动每个服务,我希望至少不会

那么,是否有某种方法可以重复使用同一个服务并在服务中拥有多个服务?我认为这是一个糟糕的解释,但我希望至少有人明白我的意思,并想帮助我:)


谢谢

不确定您所说的不同服务是什么意思,但如果您只是根据按钮单击传递不同的信息,那么您可以通过附加服务传递信息。在你有按钮的类中,你会在每个按钮点击上放置类似的东西

    Intent i = new Intent(FirstActivity.this, SecondActivity.class);   
    String values = "something";
    i.putExtra("EXTRASNAME", values);
然后在下面的类中接收值

    Bundle extras = getIntent().getExtras();
    String values = extras.getString("EXTRASNAME");

如果不同的按钮是值,例如(YES或NO),则将值“YES”或值“NO”放在同一个extras字符串中,并且在下一个活动中接收值时,可以执行简单的If{}语句,让该活动根据extras值执行不同的操作。通过附加功能,您还可以执行putBoolean/getBoolean和putInt/getInt。希望这有帮助

解决方案,如聊天中所述:

问题是您每次都在调用
startService
。解决方案是将调用更改为
bindService
,这样服务就不会重新启动


该服务将一直运行,直到没有更多的上下文绑定到它为止。如果您只绑定了一个活动,那么当该活动消失时,可以停止该服务。如果需要在应用程序启动时连续运行,请尝试从应用程序上下文调用。

您是直接将服务子类化还是将服务子类化?似乎后者更适合您的情况。如果您指的是我的主类的子类,那么不,服务在自己的文件中@亚历克西斯:这个重新启动的服务,是你写的吗?如果“是”,它是扩展服务还是扩展IntentService?如果是“服务”,您真的需要一次处理多个请求吗?如果“否”,请尝试扩展IntentService,它更简单,并且不会出现重新启动的问题。这只是一个建议,不是完整的解决方案。好的,是我写的。它只扩展了服务,我需要一次处理多个请求。您是通过
bindService
还是
startService
调用您的服务?如果您多次调用
startService
,可能会出现问题。附言:看来你被否决了,因为你的问题不清楚。试着更好地解释(+1)是的,我想我可以这样做。但问题是,不仅仅是两个按钮,用户还可以根据自己的需要选择多个按钮。