当从onSurfaceCreated中使用AsyncTask时,会崩溃。

3

我在我的Android应用程序中有一个扩展GLSurfaceView并实现Renderer的类,负责OpenGL渲染。当我尝试从onSurfaceCreated事件执行asynctask时,应用程序会崩溃(没有抛出异常)。如果我从主活动运行相同的异步任务,则一切正常。目前,asynctask实现仅是一个占位符:

public class DownloadImageTask extends AsyncTask<String, Void, Integer>
{
        @Override
        protected Integer doInBackground(String... myParams) {
            return 1;
         }

        @Override
        protected void onPostExecute(Integer result)
        {

        }
     }

从onSurfaceCreated()被调用。
new DownloadImageTask().execute("myParam");

为什么不能从onSurfaceCreated事件开始一个AsyncTask?


在应用程序崩溃后,请粘贴logcat输出。 - Cristian
抱歉,我已经将调用代码添加到问题中了。 - Mr Bell
Christian,在哪里可以找到logcat输出? - Mr Bell
1个回答

3
我认为你需要在UI线程上调用它。尝试传入上下文并使用runOnUIThread方法。

有没有办法知道你的代码是否在UI线程上运行? - Mr Bell
在Swing中有一种方法,但我不确定在Android中是否适用。我搜索了一下,但没有找到相关信息。但如果你总是调用runOnUIThread,我认为不会出现任何问题。 - Amir Raminfar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接