Как получить экземпляр Android Local Service - PullRequest
16 голосов
/ 11 июня 2010

Я запускаю службу в своем приложении с помощью startService.

Я не хочу использовать bindService, так как хочу сам обрабатывать срок службы.

Как получитьэкземпляр для службы запущен, если я не использую bindService?Я хочу, чтобы у меня был обработчик, созданный в классе обслуживания, для отправки сообщений из действия.

Спасибо.

/ Henrik

Ответы [ 2 ]

16 голосов
/ 11 июня 2010

Я не хочу использовать bindService, поскольку я хочу справиться со сроком службы я.

Это не значит, что вы должны избегать bindService(). При необходимости используйте startService() и bindService().

Как я могу получить экземпляр служба запущена, если я не пользуюсь bindService

Либо используйте bindService() с startService(), либо используйте синглтон.

5 голосов
/ 03 июля 2014

Вот еще один подход:

import android.app.Service;
import android.content.Intent;
import android.os.IBinder;

public class MyService extends Service {
    private Binder binder;  

    @Override
    public void onCreate() {
        super.onCreate();
        binder = new Binder();
    }

    @Override
    public IBinder onBind(Intent intent) {
        return binder;
    }

    public class Binder extends android.os.Binder {
        public MyService getService() {
            return MyService.this;
        }
    }
}

onServiceConnected (...) может привести свой аргумент к MyService.Binder и вызвать getService() для него. Это позволяет избежать потенциальной утечки памяти из-за наличия статической ссылки на сервис. Конечно, вы все равно должны убедиться, что ваша деятельность не привязана к ссылке.

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