Android error: VM aborting

本文介绍了一个在Eclipse环境下使用Cocos进行UI处理时出现的错误,并详细解释了错误原因及解决方法。错误源于在子线程中直接修改UI,通过消息队列将UI更新任务转移至主线程来解决此问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题出现场景 Eclipse 下,Cocos 调用UI处理(java) 出错。

error:
VM aborting
Fatal signal 6 (SIGABRT) at 0x000064a6 (code=-6), thread 25880 (Thread-11230)

VM_aborting

分析:
由错误码可知,这是一个由线程引起的致命异常导致奔溃的。在java 中,凡是 调用到UI界面的 更改操作 ,都需要在主线程中作处理。

更新UI只能是主线程的工作,子线程更新UI是线程不安全的,所以android里非主线程操作主UI就会报错。

我是在接SDK 时,在子线程中作了UI的 更改,而引起的线程错误。也大概了解出错的地方,知道出错的地方也大概知道是什么原因引起的,也比较好解决。但这类问题,引起的原因种类繁多,这里仅作为参考使用。╰( ̄▽ ̄)╭

解决:
在你需要 作UI更改操作的 地方写下

        Message msg = new Message();
        msg.what = 1;
        msg.obj = "更改UI文本";
        myActivity.handler.sendMessage(msg);

然后在 handler 中通知 主线程 作处理:把消息放入主线程队列中,配合主线程更新UI.

    private Handler handler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            if(msg.what == 1){
                // 你需要做 UI更改操作方法的实现, 如:
                String str = (String)msg.obj;
                textView.setText(str);   // 更改UI 的文本标签
            }
            super.handleMessage(msg);
        }
    };
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值