我即将完成我的应用程序,并注意到一个“错误”。因为如果用户按下启动服务的按钮,然后按下另一个同样启动服务但带有其他信息的按钮,服务将重新启动,第一次启动就消失了。他们不能意味着我应该编写 100 万个具有相同代码但名称不同的服务类吗?所以每个按钮启动每个服务,我希望不是至少。
那么,有没有办法在服务中重用相同的服务并拥有多个服务?我认为这是一个糟糕的解释,但我希望至少有人明白我的意思并想帮助我:)
谢谢!
解决方案,如聊天中所述:
https://chat.stackoverflow.com/rooms/23522/discussion-between-alex-oliveira-and-guiceu
问题是你startService
每次都在打电话。解决办法是把调用改成bindService
,这样Service就不会重启了。
服务将一直运行,直到没有更多的上下文绑定到它为止。如果你只绑定一个 Activity,当 Activity 消失时,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 OR NO)之类的值,则将值“YES”或值“NO”放在相同的附加字符串中,并且在下一个活动中接收值时,您可以执行一个简单的 if{} 语句来让活动根据额外价值做不同的事情。使用附加功能,您还可以执行 putBoolean/getBoolean 和 putInt/getInt。希望这可以帮助。