Kotlin наблюдает данные в реальном времени каждую 1 секунду - PullRequest
0 голосов
/ 30 сентября 2019

Может кто-нибудь посоветовать мне, мой код правильный или неправильный? работает нормально. Kotlin наблюдает за живыми данными каждую 1 секунду за живыми данными

Я попробовал этот код, работающий нормально, протестировано в Android версии 6 и версии 9.

Примечания: ViewModel - это класс, отвечающий за подготовку и управлениеданные для {@link android.app.Activity Activity} или {@link androidx.fragment.app.Fragment Fragment}. Он также обрабатывает взаимодействие Activity / Fragment с остальной частью приложения (например, вызовом классов бизнес-логики).

LiveDataViewModel.kt

    package com.androidfeby.androidx.ui.livedata

    import androidx.lifecycle.LiveData
    import androidx.lifecycle.MutableLiveData
    import androidx.lifecycle.ViewModel
    import java.text.SimpleDateFormat
    import java.util.*
    import androidx.core.os.HandlerCompat.postDelayed
    import android.icu.lang.UCharacter.GraphemeClusterBreak.T
    import android.os.Handler


    class LiveDataViewModel : ViewModel() {

        private val _text = MutableLiveData<String>().apply {
            // handler every 1 sec delay
            val h = Handler()
            h.post(object : Runnable {
                override fun run() {

                    // display date & time
                    val sdf = SimpleDateFormat("dd/M/yyyy hh:mm:ss", Locale.getDefault())
                    val currentDate = sdf.format(Date())
                    value = currentDate

                    h.postDelayed(this, 1000)
                }
            })
        }
        val text: LiveData<String> = _text
    }

LiveDataFragment.kt

    package com.androidfeby.androidx.ui.livedata

    import android.os.Bundle
    import android.view.LayoutInflater
    import android.view.View
    import android.view.ViewGroup
    import android.widget.TextView
    import androidx.fragment.app.Fragment
    import androidx.lifecycle.Observer
    import androidx.lifecycle.ViewModelProviders
    import com.androidfeby.androidx.R

    class LiveDataFragment : Fragment() {

        private lateinit var liveDataViewModel: LiveDataViewModel

        override fun onCreateView(
            inflater: LayoutInflater,
            container: ViewGroup?,
            savedInstanceState: Bundle?
        ): View? {

            liveDataViewModel =
                ViewModelProviders.of(this).get(LiveDataViewModel::class.java)

            val root = inflater.inflate(R.layout.fragment_live_data, container, false)


            val textView: TextView = root.findViewById(R.id.text_date_time)
            liveDataViewModel.text.observe(this, Observer {
                textView.text = it
            })

            return root
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...