andengine:调用updatethread冻结ui线程/动画
【腾讯云】亏本大甩卖,服务器4核16G 1年370元(带宽12M,系统盘120GB SSD盘,月流量2000GB)!!!!!!
云产品 配置 价格
服务器 1核2G,带宽5M,系统盘50GB SSD盘,月流量500GB 38元/年
MySQL 1核1G 19元/年
服务器 16核32G,带宽18M,系统盘250GB SSD盘,月流量5000GB 1197元/年
点我进入腾讯云,查看更多详情

I'm trying to build my first project with the andengine. things work fine so far but i have a problem with the threading model. As far as I know calculations should be done in the update thread to prevent the ui from freezing. So to make sure my calculations really take place in the updatethread I made a mock method with a for-loop to check if the screens freezes and unfortunately it does. so this is my test code:

this is how I initialize the scene:

private void init() {
        engine.registerUpdateHandler(new IUpdateHandler() {

        @Override
        public void onUpdate(final float pSecondsElapsed) {
            gamemodel.test();
        }

        @Override
        public void reset() {
        }

    });

gamemodel is an object from this class:

public class Game {

    public void test() {
       for(int i=0;i<100000000;++i) {
       }
    }

}

I also tried to call the test-Method within engine.runOnUpdateThread but it did not work either.

I would except that the animations (animatedsprites) in the scene won't freeze because the test-method is not called in the UI thread. So what is acutally happening here and what is the solution?

#0

as I found out by myself registering an updatehandler just means that the updatehandler is run within the next call of the update-method of the andengine. if you want to run a method asynchronously you have to do within an asynctask or something similar.

推荐文章

为什么会这样ThreadPool.QueueUserWorkItem代码没有通过我的测试?

为什么会这样ThreadPool.QueueUserWorkItem代码没有通过我的测试?

推荐文章

Python条件字典理解

Python条件字典理解

推荐文章

%二项系数的mod兼容生成方法

%二项系数的mod兼容生成方法

推荐文章

使用Watin或其他本地功能滚动到浏览器元素

使用Watin或其他本地功能滚动到浏览器元素

推荐文章

Debian Samba-受保护和公用文件夹的混合-Win7客户端

Debian Samba-受保护和公用文件夹的混合-Win7客户端

推荐文章

使用Captionator从HTML5

使用Captionator从HTML5的读取元数据

推荐文章

来自两个来源的程序输入?

来自两个来源的程序输入?

推荐文章

错误:找不到体系结构x86\u 64的符号,collect2:ld返回1退出状态

错误:找不到体系结构x86\u 64的符号,collect2:ld返回1退出状态

推荐文章

splitViewC的默认实现控制器:shouldHideViewController:i方向:

splitViewC的默认实现控制器:shouldHideViewController:i方向:

推荐文章

这个滚动功能是如何实现的

这个滚动功能是如何实现的

推荐文章

jsLint error“无法设置未定义的属性'first'”

jsLint error“无法设置未定义的属性'first'”

推荐文章

Android指南针和摄像头启用教程

Android指南针和摄像头启用教程

推荐文章

如何将BigDecimal转换成指数形式?

如何将BigDecimal转换成指数形式?

推荐文章

交换数组中的两个项,但不通过引用传递

交换数组中的两个项,但不通过引用传递

推荐文章

单击后禁用href(ajax,js)

单击后禁用href(ajax,js)

推荐文章

在主页面上有asp脚本管理器,在内容页上有telerik radgrid

在主页面上有asp脚本管理器,在内容页上有telerik radgrid