В Android это хороший и простой способ запустить только один Сервис - PullRequest
0 голосов
/ 11 декабря 2011

У меня это 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 голосов
/ 13 декабря 2011

Я закончил с использованием 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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...