设备变黑并且启动超时到期

时间:2016-02-07 21:18:27

标签: android

由于我是Android编程的新手,我不知道如何有效地编写代码因此这个问题的原因。我正在创建一个应用程序。一个基本的应用程序,其中应用程序生成10个随机数学问题并从左到右评估它(忽略操作顺序)。例如。 3 + 5/2应该等于4而不是5.5。

我收到错误启动超时已过期。我研究了这个并发现它因为主线程做了太多工作。我该如何克服这个问题?我的应用程序首先进行了很多随机整数,可能就是这种情况吗?

这是代码。这很长。 附:在显示方法中,我hrdcoded它显示第一个元素只是为了看它是否会显示。

public void initAnswers(String[] questionToBeLooped){


    for(int i =0; i < questionToBeLooped.length; i++){



        if(mathOperations.length == 2){
            runningTotal = evaluateAnswerTwoOperations(mathOperations[0], mathNumbersInIntFormat.get(0), mathNumbersInIntFormat.get(1));
        }else{
            int operationsCounter =0;
            int numbersCounter =1;
            runningTotal = mathNumbersInIntFormat.get(0);
            while(mathOperations[operationsCounter] != "="){
                runningTotal = evaluateAnswerTwoOperations(mathOperations[0],runningTotal,mathNumbersInIntFormat.get(numbersCounter));
            }

        }
        answers[i] = runningTotal;
    }

}

有人可以告诉我如何有效地写这个,还可以提供一些技巧来生成流畅有效的应用程序。

1 个答案:

答案 0 :(得分:0)

不确定代码中的原因是什么,但是您应该将繁重的工作卸载到AsyncTaskAsyncTask允许您通过doInBackground在后​​台线程中执行代码,并通过onPostExecute回调到UI线程。你正在做的繁重工作可能是你所拥有的循环结构。

请记住,您无法从后台修改UI,因此如果您需要更新UI,请等到繁重的工作完成并在onPostExecute中执行。

查看AsyncTask上的文档here

另外值得注意的是AsyncTask有一个lot of flaws,但由于你是新手 - 这是我建议开始的地方。