我有CropViewActivity
裁剪图像,将裁剪后的图像保存到外部存储器。解码位图并将其保存到外部存储器的过程在另一个线程中完成。因此,作物活动结束,而图像处理仍在后台进行。现在我想要一种方法通知我的其他Activity
,其中包含ImageView
。在后台图像处理结束时,ImageView
应该从内存中获取已保存的图像并加载它。
如何实现这种跨线程和互动间沟通?请帮忙..
答案 0 :(得分:0)
AsnycTask?
typealias Callback = () -> Unit
class BitmapWorker: AsyncTask<Callback, Void, Callback?>
override fun doInBackground(vararg params: Callback): Callback? {
// work with bitmap
return params.firstOrNull()
}
override fun onPostExecute(finishTask: Callback?) {
finishTask?.invoke()
}
}
将其称为:
BitmapWorker().execute(fun() {
println("finished")
}
答案 1 :(得分:0)
有几种方法可以做到这一点。我想推荐你一些。
BroadcastReceiver
。您需要在包含ImageView
的活动中注册接收器,并在处理另一个活动中的图像后,发送具有您正在收听的所需意图的广播。这是关于如何实现BroadcastReceiver
的{{3}}。 startActivityForResult
,然后从处理图片的活动中获取结果,并将结果返回到包含ImageView
的调用活动中。 根据您的使用情况,您可以选择最适合的这两种中的任何一种。希望有所帮助。