Android   发布时间:2022-04-28  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了android – BaseGameActivity.runOnUpdateThread()与Entity.registerUpdateHandler()大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
如果我使用runOnupdateThread()执行Runnable或者将更新处理程序注册到实体并使用它执行代码,有什么区别吗?

我想用Sprite.detachSelf()从场景中删除一个Sprite.在本例中,教程说必须在使用BaseGameActivity.runOnupdateThread()的更新线程中调用方法.但是使用这个解决方案,我必须将activity对象传递给想要使用runOnupdateThread()的每个对象.嗯……我不喜欢它.

我的问题是,如果我在Entity中创建一个RunnableHandler对象并使用registerupdateHandler()注册它,并将新的Runnable添加到RunnableHandler,此解决方案是否与runOnupdateThread()功能相同.这个Runnable是否在update Thread中执行?

/* MySprite is attached to a Scene object */
public class MySprite extends Sprite {
   private final RunnableHandler updatE_HANDLER = new RunnableHandler();

   public MySprite() {
       registerupdateHandler(updatE_HANDLER);
   }

   /* called when the sprite has to be removed from scene */
   public void removeMyself() {
       Runnable r = new Runnable() {
           public void run() {
               detachSelf();
           }
       };
       updatE_HANDLER.postRunnable(r);
   }
}

我问这个是因为标准解决方案一切正常.但是使用更新处理程序解决方案我得到了这个异常

通常在更新线程中未调用的附加/分离函数时出现.我对吗?
预先感谢您的帮助.

解决方法

@H_674_16@ 看一下 Entity中的源代码,理论会发生什么:

>显示的行,获取实体计数= 19(来自日志)
>其中一个entity.get(i).onupdate()调用removeMyself()
> detachSelf的runnable排队.
>在下一个entity.get(i).onupdate()将导致updateHandler通过onUpdate运行(updatehandlers在onManagedupdate中运行)
> detachSelf从父列表(调用者)中删除子项(其中条目计数仍为19,但mChildren / entities的长度现为18)

只是从查看代码的理论……我认为开始得到答案的一个好点是在Entity中查看循环并查看循环期间是否修改了“实体”. (注意:’最终实体’只是阻止重新分配变量,而不是修改列表)

大佬总结

以上是大佬教程为你收集整理的android – BaseGameActivity.runOnUpdateThread()与Entity.registerUpdateHandler()全部内容,希望文章能够帮你解决android – BaseGameActivity.runOnUpdateThread()与Entity.registerUpdateHandler()所遇到的程序开发问题。

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

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签:androidentity