我正在使用下面的一段代碼來將字符串方程式解析爲一個結果double(基於double x,y和z以及方程式輸入的一些輸入值)。當我在eclipse中將它作爲java程序運行時,該程序運行良好,但是當它在android應用程序中運行時應用程序掛起(應用程序無響應)。在我的應用程序中,我從文本框中獲取字符串公式並顯示結果編號。任何人都可以告訴我爲什麼下面的代碼不能在android中工作?我的猜測是它與try-catch有關,但我無法弄清楚爲什麼。我正在使用exp4j jar。Try/catch不能與android表達式解析器一起使用exp4j
非常感謝!
public class ParseEquation {
public double totalValue = 0;
public ParseEquation(String inputEquation, double x, double y,double z)
{
//String inputEquation = "-4.14*x*x - 5/2 - y^2";
Calculable calc = null;
try {
calc = new ExpressionBuilder(inputEquation)
.withVariable("x", x)
.withVariable("y", y)
.withVariable("z", z)
.build();
} catch (UnknownFunctionException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (UnparsableExpressionException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
totalValue=calc.calculate();
}
}
您可以定義*「它失敗時,我在android應用程序中運行」*和*「不起作用」*?應用程序崩潰了嗎? Logcat中是否存在異常? – 2014-10-20 13:55:22
日誌貓有文字:「10-20 10:00:03.501:D/dalvikvm(7043):GC_FOR_ALLOC釋放8191K,23%空閒51270K/66396K,暫停26ms,總共26ms」。不知道這是否有幫助。失敗,我的意思是我的android應用程序變得沒有響應,並且活動停止;我無法按任何按鈕或做任何事情。 – 2014-10-20 14:02:26
對,這意味着一些長時間運行的操作阻止了主/ UI線程(ANR - Android Not Responding)。一般來說,Android會將線程狀態信息輸出到名爲'traces.txt'的文件中 - 查看線索。或者,查看您的代碼以確定潛在的長時間運行阻塞操作。您必須將其卸載到後臺/工作線程中,以便ui保持響應。 – 2014-10-20 14:14:36