Когда отписаться от подписки

У меня есть вопрос относительно того, как отписаться от наблюдаемого. У меня есть два кода, и я не совсем уверен, какой из них лучше.

Пример 1 -> Отписаться от подписчика после завершения потока:

Subscriber<String> subscriber = new Subscriber<String>() {
        @Override
        public void onCompleted() {
            progressdialog.dissmiss();
            unsubscribe();
        }

        @Override
        public void onError(Throwable e) {
            progressdialog.dissmiss();
        }

        @Override
        public void onNext(String s) {
            // do something with data
        }
    }

Пример 2 -> Отписаться от подписки после уничтожения активности:

private void test(){
    Subscriber<String> subscriber = new Subscriber<String>() {
        @Override
        public void onCompleted() {
            progressdialog.dissmiss();
        }

        @Override
        public void onError(Throwable e) {
            progressdialog.dissmiss();
        }

        @Override
        public void onNext(String s) {
            // do something with data
        }
    };

    subscription = BackendRequest.login(loginRequest)
            .subscribeOn(Schedulers.newThread())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe(subscriber);

    compositeSubscription.add(subscription);
}

@Override
protected void onDestroy() {
    super.onDestroy();
    this.subscription.unsubscribe();
}

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

Какой из них лучше?

заранее спасибо