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