由于我是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;
}
}
有人可以告诉我如何有效地写这个,还可以提供一些技巧来生成流畅有效的应用程序。
答案 0 :(得分:0)
不确定代码中的原因是什么,但是您应该将繁重的工作卸载到AsyncTask
。 AsyncTask
允许您通过doInBackground
在后台线程中执行代码,并通过onPostExecute
回调到UI线程。你正在做的繁重工作可能是你所拥有的循环结构。
请记住,您无法从后台修改UI,因此如果您需要更新UI,请等到繁重的工作完成并在onPostExecute
中执行。
查看AsyncTask
上的文档here。
另外值得注意的是AsyncTask
有一个lot of flaws,但由于你是新手 - 这是我建议开始的地方。