Почему я не могу остановить службу в Android? - PullRequest
0 голосов
/ 15 февраля 2010
Intent helloservice = new Intent(this, HelloService.class);
startService(helloservice);
...
stopService(helloservice);

Почему это не сработает? Это просто продолжает работать. Я скучаю по некоторым Связям или что-то?

Кстати, это мой сервис:

public class HelloService extends Service {
    private Timer timer = new Timer();
    private long INTERVAL = 1000;

    public void onCreate() {
        super.onCreate();
        startservice();
    }

    private void startservice() {
        timer.scheduleAtFixedRate( new TimerTask() {
            public void run() {
                Log.d("service", "This proves that my service works.");
            }
        }, 0, INTERVAL);
    ; }

    @Override
    public IBinder onBind(Intent arg0) {
        return null;
    }
}

Ответы [ 2 ]

5 голосов
/ 15 февраля 2010

Чтобы заставить Timer уйти, когда ваша служба остановлена, вам нужно позвонить cancel() на Timer в соответствующем методе обратного вызова для службы; onDestroy судя по всему.

Даже если я остановлю свою службу ... мой таймер работает? Зачем?

Поскольку для операционной системы Android экземпляр Timer не связан логически с какой-либо конкретной службой. Реализация Службы отвечает за освобождение любых ресурсов, с которыми не будет работать сборщик мусора. (Открытые файловые дескрипторы и соединения с базой данных - другие примеры, которые я себе представляю.)

2 голосов
/ 15 февраля 2010

Это останавливает вашу службу. Переопределите onDestroy в вашем сервисе, и вы увидите, что он называется. Но служба! = Таймер, вы должны остановить таймер вручную.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...