停止已在应用程序启动时启动服务

时间:2013-02-27 06:02:49

标签: java android service crash

我有一个网络应用程序,它使用服务连接到其他同行。当您使用“最近的应用程序”关闭应用程序时,它将关闭该过程,而不是service,这实际上并不是因为我希望以这种方式。但是下次用户打开应用程序时会遇到一些麻烦。它崩溃,因此用户必须使用“Recent Apps”再次关闭,然后再次尝试使用该应用程序。问题肯定是正在运行的服务,因为如果我在下次运行之前停止服务。它运作得很好!

实际上对我来说很奇怪,因为我没有在启动时启动另一个service。当用户点击按钮时我启动它。无论如何,如果有可能,最好的方法是能够使用正在运行的service,否则,我只想在我的应用程序启动时停止服务。

我是Android的新手,我在这一点上陷入困​​境:(

感谢您的帮助

2 个答案:

答案 0 :(得分:0)

服务骨架:

public class MyService extends Service {
public static final String TAG = "MyServiceTag";
...
}

这是开始活动的一部分:

processStartService(MyService.TAG);

 private void processStartService(final String tag) {
Intent intent = new Intent(getApplicationContext(), MyService.class);
intent.addCategory(tag);
startService(intent);
}

这是停止活动的一部分:

processStopService(MyService.TAG);

private void processStopService(final String tag) {
Intent intent = new Intent(getApplicationContext(), MyService.class);
intent.addCategory(tag);
stopService(intent);
}

答案 1 :(得分:0)

使用一个static对象来指示服务是否正在运行。

否则第二个选项我找到How to check if a service is running on Android?

if(startService(someIntent) != null) { 
    Toast.makeText(getBaseContext(), 'Service is already running',Toast.LENGTH_SHORT).show();
}else {
    Toast.makeText(getBaseContext(), 'There is no service running, starting service..', Toast.LENGTH_SHORT).show();
}