在线程中调用被传进去的函数,实现在线程文件中调用其它文件里定义的函数
//定义线程类
internal class ImageSaver(
private val image: Image,
private val showDetails: (arg:ByteArray) -> Unit //定义需要被调用的函数
) : Runnable {
override fun run() {
val buffer = image.planes[0].buffer
val bytes = ByteArray(buffer.remaining())
buffer.get(bytes)
showDetails(bytes)//调用需要被调用的函数
}
companion object {
/**
* Tag for the [Log].
*/
private val TAG = "ImageSaver"
}
}
//定义函数方法
fun showDetails(arg:ByteArray){
}
//定义线程
private var backgroundThread: HandlerThread? = null
private var backgroundHandler: Handler? = null
//初始化线程
backgroundThread = HandlerThread("CameraBackground").also { it.start(); }
backgroundHandler = backgroundThread?.looper?.let { Handler(it) }
// 给线程传递方法
backgroundHandler?.post(ImageSaver(it.acquireNextImage(), {a -> showDetails(a)}, file))