有没有简单的方法来确定某项服务是否有效?我这样做
boolean serviceWorking = false;
@Override
public void onCreate() {
serviceWorking = true;
}
@Override
public void onDestroy() {
serviceWorking = false;
stopSelf(startId);
}
但它不起作用。
答案 0 :(得分:5)
有关运行服务的信息由Android操作系统通过ActivityManager#getRunningServices提供。 所有使用onDestroy或onSometing事件或Binders或静态变量的方法都无法可靠地运行,因为作为开发人员,您永远不知道,当Android决定终止您的进程或者是否调用了所提及的回调时。
你可以在活动
中编写这样的方法<table border="1px">
<tr>
<td>
<div>
<div style="width:calc(100% - 32px);overflow: auto;float:left">
<span>
<form>
<textarea></textarea>
</form>
</span>
</div>
<div style="float: right;">
<button type="button" class="btn btn-primary" style="width:32px;font-size:8px;" title="Select Financial Instrument">
Click
</button>
</div>
</div>
</td>
<td>Another cell</td>
</tr>
</table>
使用:
来调用它private boolean isMyServiceRunning(Class<?> serviceClass) {
ActivityManager manager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
for (RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) {
if (serviceClass.getName().equals(service.service.getClassName())) {
return true;
}
}
return false;
}
答案 1 :(得分:1)
我参考以下内容:Check if service is running on Android?
public class MyService extends Service
{
private boolean mRunning;
@Override
public void onCreate()
{
super.onCreate();
mRunning = false;
}
@Override
public int onStartCommand(Intent intent, int flags, int startId)
{
if (!mRunning) {
mRunning = true;
// do something
}
return super.onStartCommand(intent, flags, startId);
}
}