首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果我张贴画布并离开应用程序,则出错。

如果我张贴画布并离开应用程序,则出错。
EN

Stack Overflow用户
提问于 2014-12-19 14:11:16
回答 1查看 234关注 0票数 0

我正在将一个画布呈现给一个额外线程中的表面视图,它处理画布的锁定和解锁。因为我的应用程序会崩溃,如果我切换到主屏幕上的主屏幕上有make按钮(错误: nullpointerexception,画布是空的),所以在计算画布不为空之前,我要确保它是空的。所以我就这样做:

代码语言:javascript
复制
    @Override
public void run(){
    while(running){
        Canvas canvas = this.holder.lockCanvas();
        if(canvas != null) {
            this.render.canvas = canvas;
            this.render.RenderOneStep();
        }
        this.holder.unlockCanvasAndPost(this.render.DisplayResult());
        this.view.postInvalidate();
    }
}

但是如果我切换到主屏幕,我会发现一个奇怪的错误:

12-19 15:09:52.333 11190-11208/com.example.standardbenutzer.adelpath A/libc:致命信号11 (SIGSEGV)在0x00000000 (code=1),线程11208 (线程-1006) 12-19 15:09:52.387 11190-11208/com.example.standardbenutzer.adelpath A/libc:向pid发送停止信号:11190 in void debuggerd_signal_handler(int,siginfo_t*,void*)

我有什么办法让它起作用吗?

EN

回答 1

Stack Overflow用户

发布于 2014-12-19 14:48:54

在onStop中关闭呈现线程,然后在onStart中再次启动它

不确定这是否能解决你的问题

当我在画布上进行渲染时,我总是在活动被破坏时停止呈现线程( onStop或onDestroy ),并在重新输入该活动时再次启动它。

我保留对执行画布锁unlockAndPost逻辑的runnable类的引用。当我退出时,我调用runnable上的一个方法来结束呈现线程。

在您的情况下,将“运行”变量更改为false。

另一件事是检查画布对象的宽度>0和高度>0,如果画布没有宽度或高度,我跳过呈现。我在一些设备上看到了这个,但还是不知道为什么。

在访问视图(而不是画布)信息时,我遇到了一个类似的问题,这与我的呈现例程中的活动有关。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27567803

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档