I have problem when I come back in the activity from another.
In my activity I use a ViewModel and, when the activity is created I call challengeDayViewModel.daysForChallenge and I observe the changes. When data are ready I set them on the adapter. In the adapter when I click on item I call challengeDayViewModel.getChallengeDay(dayId) and observe for the result. When it is ready I start activity for result passing a property of the object retrieved. In the CountdownActivity I do some things and when I come back, in the onActivityResult method I update my data in DB using 
challengeDayViewModel.setDayDone(selectedDayId) and the problem is here. Commenting the row where I update the data in DB everything work perfectly but if I add the row for the update, the update is done but after he re-run the rown startActivityForResult(intent, ActivityRequestCode.COUNTDOWN_CODE) opening again the CountdownActivity (I see in debug)
class ChallengeDayActivity: AppCompatActivity() {
    private var selectedDayId: Long = 0
    private lateinit var adapter: ChallengeDayAdapter
    private val challengeDayViewModel: ChallengeDayViewModel by lazy {
        ViewModelProvider.AndroidViewModelFactory.getInstance(application).create(ChallengeDayViewModel::class.java)
    }
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_challenge_day)
        val recyclerView = challenge_day_recyclerview
        adapter = ChallengeDayAdapter(this)
        recyclerView.adapter = adapter
        recyclerView.layoutManager = GridLayoutManager(this, 3)
        challengeDayViewModel.daysForChallenge.observe(this, Observer { challengeDayList ->
            challengeDayList.let {
                adapter.setChallengeDay(challengeDayList)
                adapter.notifyDataSetChanged()
            }
        })
        adapter.goToCountdown = { dayId ->
            selectedDayId = dayId
            challengeDayViewModel.getChallengeDay(dayId).observe(this, Observer { challengeDay ->
                val intent = Intent(this, CountdownActivity::class.java).apply {
                    putExtra("seconds", challengeDay.seconds)
                }
                startActivityForResult(intent, ActivityRequestCode.COUNTDOWN_CODE)
            })
        }
    }
    override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
        super.onActivityResult(requestCode, resultCode, data)
        if (requestCode == ActivityRequestCode.COUNTDOWN_CODE && resultCode == Activity.RESULT_OK) {
            challengeDayViewModel.setDayDone(selectedDayId)
            Snackbar.make(coordinator, "BUBU", Snackbar.LENGTH_LONG).show()
        }
    }
}
My viewmodel is
class ChallengeDayViewModel: ViewModel() {
    private val challengeDayRepository: ChallengeDayRepository
    val daysForChallenge: LiveData<List<ChallengeDay>>
    init {
        val challengeDayDao = database.challengeDayDao()
        challengeDayRepository = ChallengeDayRepository(challengeDayDao)
        daysForChallenge = challengeDayRepository.getChallengeDayForStandardChallenge()
    }
    fun setDayDone(challengeDayId: Long) = viewModelScope.launch(Dispatchers.IO) {
        challengeDayRepository.setDayDone(challengeDayId)
    }
    fun getChallengeDay(challengeDayId: Long): LiveData<ChallengeDay> = challengeDayRepository.getChallengeDay(challengeDayId)
}
My DAO
@Dao
interface ChallengeDayDao {
    @Query("SELECT * FROM CHALLENGE_DAY WHERE CHD_ID_PK = :challengeDayId")
    fun getChallengeDay(challengeDayId: Long): LiveData<ChallengeDay>
    @Query("SELECT * FROM CHALLENGE_DAY WHERE CHG_ID_FK = :challengeId")
    fun getChallengeDayForChallenge(challengeId: Long): LiveData<List<ChallengeDay>>
    @Query("SELECT CHD.* FROM CHALLENGE_DAY CHD JOIN CHALLENGE CHG ON CHD.CHG_ID_FK = CHG.CHG_ID_PK WHERE CHG.CHG_STANDARD = 1")
    fun getStandardChallengeDayForChallenge(): LiveData<List<ChallengeDay>>
    @Query("UPDATE CHALLENGE_DAY SET CHD_DONE = 1 WHERE CHD_ID_PK = :challengeDayId")
    suspend fun setDayDone(challengeDayId: Long)
    @Insert
    suspend fun insert(challengeDay: ChallengeDay)
    @Insert
    suspend fun insertAll(challengeDay: List<ChallengeDay>): List<Long>
}
In CountdownActivity for coming back I have this code
alert("Test message", "Test title") {
    okButton {
        setResult(Activity.RESULT_OK)
        finish()
    }
}.show()
Here the code for Repository
class ChallengeDayRepository(private val challengeDayDao: ChallengeDayDao) {
    @WorkerThread
    fun getChallengeDay(challengeDayId: Long): LiveData<ChallengeDay> = challengeDayDao.getChallengeDay(challengeDayId)
    @WorkerThread
    fun getAllChallengeDaysForChallenge(challengeId: Long): LiveData<List<ChallengeDay>> = challengeDayDao.getChallengeDayForChallenge(challengeId)
    @WorkerThread
    fun getChallengeDayForStandardChallenge(): LiveData<List<ChallengeDay>> = challengeDayDao.getStandardChallengeDayForChallenge()
    @WorkerThread
    suspend fun setDayDone(challengeDayId: Long) = challengeDayDao.setDayDone(challengeDayId)
    @WorkerThread
    suspend fun insert(challengeDay: ChallengeDay) = challengeDayDao.insert(challengeDay)
    @WorkerThread
    suspend fun insertAll(challengeDay: List<ChallengeDay>): List<Long> = challengeDayDao.insertAll(challengeDay)
}