Как получить экземпляр локальной сети Android

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

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

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

Спасибо.

/Хенрик

Ответы

Ответ 1

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

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

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

Используйте bindService() с startService() или используйте одноэлемент.

Ответ 2

Здесь другой подход:

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() на нем. Это позволяет избежать потенциальной утечки памяти из-за статической ссылки на услугу. Конечно, вы все равно должны убедиться, что ваша деятельность не висит на ссылке.