В моем классе активности я хочу выполнить серию длинных вычислений, которые требуют около 5 секунд, чтобы завершиться, когда я нажимаю кнопку. Поэтому, чтобы сделать это, я создал новый класс, который выполняет все вычисления в своем методе run (поскольку он реализует Runnable), и когда он закончил, я установил для переменной значение true, чтобы указать это. В коде, который проверяет, нажата ли кнопка, я запускаю новый поток, передавая в нем мой класс, а затем проверяю, завершился ли метод run или нет. Если это закончилось, я распечатал данные. Проблема в том, что когда я проверяю, завершены ли вычисления, они фактически не имеют, поэтому он проходит эту строку кода и никогда не печатает данные. Я пытался сделать метод класса Async, но все же я думаю, что он не будет работать. Есть ли способ создать поток, когда я нажимаю кнопку и продолжаю проверять, закончил ли я, чтобы я мог распечатать данные? Какой фрагмент кода в Деятельности фактически выполняется снова и снова? Спасибо за любую информацию.
if(v.equals(this.button)) {
EditText param1 = (EditText)findViewById(R.id.param1);
EditText param2 = (EditText)findViewById(R.id.param2);
calculations = new MathCalc(param1.getText().toString(), param2.getText().toString());
new Thread(calculations).start();
while(!calculations.isReady());
Intent intent = new Intent(this,Show.class);
intent.putExtra("show1", calculations.getResult());
startActivity(intent);
}
Это то, чего я хочу достичь.