如何从另一个活动触发活动的方法调用?

时间:2018-06-18 16:15:13

标签: java android multithreading bitmap kotlin

我有CropViewActivity裁剪图像,将裁剪后的图像保存到外部存储器。解码位图并将其保存到外部存储器的过程在另一个线程中完成。因此,作物活动结束,而图像处理仍在后台进行。现在我想要一种方法通知我的其他Activity,其中包含ImageView。在后台图像处理结束时,ImageView应该从内存中获取已保存的图像并加载它。

如何实现这种跨线程和互动间沟通?请帮忙..

2 个答案:

答案 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)

有几种方法可以做到这一点。我想推荐你一些。

  1. 完成图像处理后,您可以考虑使用BroadcastReceiver。您需要在包含ImageView的活动中注册接收器,并在处理另一个活动中的图像后,发送具有您正在收听的所需意图的广播。这是关于如何实现BroadcastReceiver的{​​{3}}。
  2. 活动之间进行通信的另一种方式是为结果启动活动。请参阅sample implementation,了解如何使用startActivityForResult,然后从处理图片的活动中获取结果,并将结果返回到包含ImageView的调用活动中。
  3. 根据您的使用情况,您可以选择最适合的这两种中的任何一种。希望有所帮助。