我知道如何从AsyncTask
返回一些数据到调用Activity
有多种方法。我可以使用Handler
中的Message
对象,或者我可以使用Interface-based
方法,Activity
和我的AsyncTask
实现相同的接口(使用传递数据的方法)。
然后还有其他方法,例如在调用Activity
时使用public
方法,并将Activity
传递给AsyncTask
,然后用结果数据填充Activity's
字段列表。或者从调用Activity
重写onPostExecute
,等等,等等。
现在,在内存消耗和执行速度方面,哪种方法是最好的?
注意:如果我们接受SO专家的评级,我看到那些评级为20k+的人建议Message
或Interface-based
方法。一些经验不足,但仍然有1万多信用的人建议其他解决方案,比如我提到的第三个。这是我困惑的根源,因为没有人提到他们的解决方案有多"重"。
传递活动不是一个好方法。因为这是记忆的负担。(所有字段都是从以前的活动加载到内存中)。这也使得两个活动紧密结合在一起。
根据场景,前两个是正确的方法。
-
基于消息的通信消耗大量android操作系统资源。对于接收到的每条消息,操作系统查找与之关联的所有处理程序。它主要用于当您的活动必须与各种其他活动以及应用程序外部的活动通信时。
-
基于接口的/回调方法在您的情况下更优先。如果您的活动必须与更少的活动通信,并且在应用程序内。它将消耗更少的内存和android操作系统的计算开销