Android Fragments 如何在Kotlinandroid中检查用户在应用程序中不活动超过60秒

pvcm50d1  于 2023-08-06  发布在  Android
关注(0)|答案(1)|浏览(187)

在我的基于Kotlin的android应用程序中,我有一个MainActivity,假设我有几个片段,比如fragmentOne和fragmentTwo。我需要的是我想不断检查用户是否在应用程序中不活动60秒,如果是这样,我需要显示一些布局,以infor用户,他是不活动的。此外,代码应该在Main Activity上运行,并且还应该侦听片段Activity。
我在主要活动中添加的内容如下

class MainActivity: AppCompatActivity() {
    private lateinit var mHandler: Handler
    private lateinit var mRunnable: Runnable
    private var mTime: Long = 60000

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        mHandler = Handler(Looper.getMainLooper())
        mRunnable = Runnable {
            Log.d("Checking", "Timer checking  :  User inactive for ${mTime/1000} secs!")
        }
        startHandler()

    }

    override fun onTouchEvent(event: MotionEvent?): Boolean {
        stopHandler()
        startHandler()
        return super.onTouchEvent(event)
    }
    private fun startHandler(){
        mHandler.postDelayed(mRunnable, mTime)
    }

    private fun stopHandler(){
        mHandler.removeCallbacks(mRunnable)
    }

}

字符串
在上面的代码中,计时器检查只执行一次。但我需要重置计时器时,用户是活跃的,计时器应再次反复运行,并检查用户是否超过60秒不活动
不知道为什么它对我不起作用,是因为片段只在视口中可用吗?

u91tlkcl

u91tlkcl1#

这是我的时间检查代码与进度条。我希望这对你有用。Jodatime请求Datetime当用户做某事编辑lastTimeRequest

val lastTimeRequest = PrivatePreferences(requireContext(), "lastTimeRequest")
    val progressBarPreference = PrivatePreferences(requireContext(), TAG)

    viewLifecycleOwner.lifecycleScope.launch {

        viewLifecycleOwner.repeatOnLifecycle(Lifecycle.State.STARTED) {
            
            while (true) {

                val leftTimeLong = progressBarPreference.readLong() - DateTime.now().minusSeconds(50).millis
                viewModel.progressBarMutableFlow.emit(leftTimeLong)

                if (lastTimeRequest.readLong() < DateTime.now().minusSeconds(50).millis) {
                    viewModel.callFlow().collect {
                        it?.let {
                            lastTimeRequest.saveLong(DateTime.now().millis)
                            //to it
                        }
                    }
                } 
                delay(1000)
            }
        }
    }

字符串

相关问题