我想在活动中显示我的服务的当前状态。我已经看到服务可以与活动绑定以执行不同的操作,但我只想知道它是已启动还是已停止。
我的主要活动启动和停止我的服务
startService(new Intent(MainActivity.this, MyService.class));
stopService(new Intent(MainActivity.this, MyService.class));
事实上,我的服务是"STICKY",并在后台做一些事情。我希望活动在文本视图中显示服务的状态(如"正在运行"或"未运行",第二个组成部分将是启动/停止服务的按钮。(带有根据状态变化的标签("启动服务"/"停止服务")。
那么,实现这一点的最佳技术解决方案是什么呢?
Thnks
您可以使用ActivityManager.getRunningServices()
参见http://developer.android.com/reference/android/app/ActivityManager.html#getRunningServices%28int%29
我发现了这个。
private boolean isMyServiceRunning() {
ActivityManager manager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
for (RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) {
if (MyService.class.getName().equals(service.service.getClassName())) {
return true;
}
}
return false;
}
然后,这意味着当活动恢复时,我需要刷新标签(服务是否运行)和按钮(启动/停止服务)。并每X秒复制一次更新。我认为这是可行的。
我只是期待一些更"现场"和实用的东西,但它确实奏效了。