在Android中,这是一种只运行一个服务的简单方法

时间:2011-12-11 11:42:54

标签: android service

我在代码中的两个位置启动了此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;
      }
    }

1 个答案:

答案 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;
}