android-如何在我自己的代码中使用回调

android-如何在我自己的代码中使用回调,第1张

概述在这里,我更新了我的世界以包括画布大小world.getViewPort().updateViewPortSize(width,height);有一个更好的方法吗?有没有一种方法可以自动更新我的世界对象,而不必在setSurfaceSize方法中手动调用它,而是从我的世界类中调用它?我的猜测是我可以使用某种回调,但是我不理解它们

在这里,我更新了我的世界以包括画布大小

world.getVIEwPort().updateVIEwPortSize(wIDth,height);

有一个更好的方法吗?有没有一种方法可以自动更新我的世界对象,而不必在setSurfaceSize方法中手动调用它,而是从我的世界类中调用它?

我的猜测是我可以使用某种回调,但是我不理解它们!

/* Callback invoked when the surface dimensions change. */public voID setSurfaceSize(int wIDth, int height) {    // synchronized to make sure these all change atomically    synchronized (mSurfaceHolder) {        mCanvasWIDth = wIDth;        mCanvasHeight = height;        world.getVIEwPort().updateVIEwPortSize(wIDth,height);    }}

解决方法:

回调函数在Java中非常简单.做到这一点的方法是简单地定义一个具有单个方法m()的接口A,然后向您的World类添加类型A的集合.然后,在World对象的某个点上,您要遍历A集合并在每个元素上调用方法m().要向您的World添加“回调函数”,您只需定义一些实现您的接口A的类,并将其放入World类中的A对象的集合中.例如,

public interface CallbackFunction{    public voID execute(int a, int b);}public class World{    List<CallbackFunction> callbackFunctions;    public voID addCallback(CallbackFunction f)    {        callbackFunctions.add(f);    }    private voID updateWorld()    {        // This loop Could be anywhere in your World class        for(CallbackFunction f : callbackFunctions)        {            f.execute(<some int>, <some int>);        }    }}

然后向您的世界添加功能:

world.addCallback(new CallbackFunction(){    public voID execute(int a, int b)    {       // Do some stuff    }}

我将剩下的工作留给您,但这应该使您对如何在Java中通常实现回调有一个很好的了解.

您也不需要存储通用的回调函数集合,您可以在World类中将特定的回调函数与特定的方法结合在一起.例如,您的World类可能具有一些通过比较集合中的两个元素对事物进行排序的方法.要确定一个对象应该在另一个对象之前还是之后,您可以定义一个CallbackFunction接口,该接口具有一个接受2件事(例如int的)的方法,并返回一个值,该值指示应优先进行的事情.例如,

public interface CallbackForSorting{    public int compare(int a, int b);}public class World{    List<Integer> thingsToSort;    public voID sortThings(CallbackForSorter sorter)    {        int result = sorter.compare(thingsToSort.get(i), thingsToSort.get(i+1));        if(result == 0)  // elements are equal        if(result == -1) // thingsToSort.get(i) is "less than" thingsToSort.get(i+1)        if(result == 1)  // thingsToSort.get(i) is "greater than" thingsToSort.get(i+1)    }}
总结

以上是内存溢出为你收集整理的android-如何在我自己的代码中使用回调全部内容,希望文章能够帮你解决android-如何在我自己的代码中使用回调所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1082345.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-27
下一篇2022-05-27

发表评论

登录后才能评论

评论列表(0条)

    保存