Не знаю что за беда с двойной подпиской - это либо с реализацией что-то, либо логгируете как-то странно. Там есть несколько стейтов у lifecycle, возможно вы это видите как «двойную подписку»
при чем здесь жизненный цикл ? просто сами попробуйте что-то подобное:
fun data(): LiveData<String> = MutableLiveData<String>().apply {
Log.v()......
}
В первом случае подпишитесь прямо из фрагмента, во втором присвойте в разметке значение какому-нибудь текстовому полю...