Async中的doInBackground中的方法在处理多个元素

时间:2017-10-31 21:11:39

标签: java android android-asynctask

我有AsyncTask执行doInBackground中的外部方法,其结构我可以按照以下方式进行调整:

    myMethod{
     new AsyncTask<Object, Void, Void>() {
         @Override
         protected Void doInBackground(Object... params) {
             Elements x=getElements();
             process(x);
         }
         ....
    }.execute();


    private void process(Elements x){
        if(x.getElementsNumber()>0){
             Drawing d=x.extractDrawing();  
             showElements(d);
             drawElementsOnImage(d);
        }
        else{
             noElementsWarning();
        }
}

方法drawElementsOnImage(d)ImageView上的画布中绘制元素。 一切正常,但是如果有超过15个元素出现奇怪的事情,并且在向视频显示正确结果后会显示一些元素,process(Elements x)会再次显示noElementsWarning()

这个问题让我很生气。我不知道这种荒谬行为的原因我可以假设存在某种内存不足,因为更长的元素列表会发生,但我在堆栈中看不到任何相关的错误。

如果我删除内部方法中的所有try catch块以解除其他可能的问题原因我有一个NullPointer异常导致x在第二个奇怪的不需要的恶作剧执行。 如果我对该行进行评论,那么 poltergeist执行就不会发生

drawElementsOnImage(d);
基本上这个方法 有一些带for个原语的嵌套float个循环 以及一些要求canvas.drawPoint()调用相关ImageView

的结果

有任何建议或我必须寻找驱魔人吗?

0 个答案:

没有答案