处理程序线程导致应用程序滞后一段时间

时间:2019-07-29 13:04:06

标签: android multithreading kotlin android-handler

我试图连续捕获图像(每秒之后)。我正在使用处理程序来模拟每秒按下一次按钮。但是,在连续捕获2分30秒后,应用程序开始挂起,并且帧的刷新速率变慢。此处提供了代码。

 val handler = Handler()
 button.setOnClickListener {
            prepareUIForCapture()
            if(isRunning){
                handler.removeCallbacksAndMessages(null)
                restartActivity()
            }else{
                button.text = "Stop"
                handler.postDelayed(object : Runnable {
                    override fun run(){
                        twoLens.reset()
                        twoLens.isTwoLensShot = true
                        MainActivity.cameraParams.get(dualCamLogicalId).let {
                            if (it?.isOpen == true) {
                                Logd("In onClick. Taking Dual Cam Photo on logical camera: " + dualCamLogicalId)
                                takePicture(this@MainActivity, it)                                
                                Toast.makeText(applicationContext, "Captured", Toast.LENGTH_LONG).show()
                            }
                        }

                        handler.postDelayed(this, 1000)
                    }
                }, 1000)
            }
            isRunning = !isRunning
        }
    }

我注意到的问题是垃圾收集器在连续捕获大约2分钟后启动,然后导致了滞后。我相信可能与Handler有关? 我也尝试分析内存。这是连续拍摄第二分钟的样子。

这方面有帮助吗?

0 个答案:

没有答案