我在代码中的两个位置启动了此Service
。
如果Service
位于onStartCommand()
内,另一位
startService
再次启动我需要停止它。
在下面的代码中,我设置了private boolean getFriendListRunning;
这样可以,或者我该怎么办?
public class ServiceGetFriendList extends Service{
private final String TAG = "ServiceGetFriendList";
private IBinder mBinder;
private boolean failed = false;
private boolean getFriendListRunning;
@Override
public void onCreate() {
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
if(getFriendListRunning)
return Service.START_STICKY;
getFriendListRunning = true;
try{
work......
} catch (Exception e) {
}finally{
getFriendListRunning = false;
}
}
答案 0 :(得分:0)
我最终使用了IntentService,在启动之前,我检查了RunningServiceInfo以查看它是否已经在运行,如果正在运行则不启动它
private boolean isIntentServiceRunning(String serv) {
ActivityManager manager = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
for (RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) {
if (serv.equals(service.service.getClassName())) {
return true;
}
}
return false;
}