Android Studio:在主线活动的线程中调用方法
我想从主活动 的以下代码中调用pauseThread方法来停止计数的电流内核整数。一些示例代码将不胜感激。如果这是不可能的,他们是一种停止点击按钮的方法吗?也许暂停线程?Android Studio:在主线活动的线程中调用方法
public class ScoreThread extends Thread {
private boolean counter;
private int currentscore;
Handler scorehandler = new Handler();
private TextView playerscore;
ScoreThread(TextView v, Boolean b) {
playerscore = v;
counter = b;
}
public void pauseThread() throws InterruptedException {
counter = false;
}
public void resumeThread() throws InterruptedException {
counter = true;
}
public void run() {
currentscore = 0;
new Thread(new Runnable() {
@Override
public void run() {
while(counter == true) {
currentscore = currentscore + 1;
scorehandler.post(new Runnable() {
@Override
public void run() {
playerscore.setText("" + currentscore);
}
});
try{ Thread.sleep(50);} catch (InterruptedException e) {e.printStackTrace();}
}
}
}).start();
}
}
您应该使用一个线程来执行计算。调用另一个线程是没有用的。我给你简短的想法如何可以实现你的目标
class Score extends Thread {
private boolean counter;
private int currentscore = 0;
public void stopThread() throws InterruptedException {
counter = false;
}
@Override
public void run() {
while (counter) {
currentscore = currentscore + 1;
//Do rest of your work
try {
Thread.sleep(50);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
在mainactivity 当你要开始计算
Score score = new Score();
score.start();
,当你想例如停止线程调用线程的方法从mainactivity使用以下
try {
// your stop event
score.stopThread();
} catch (InterruptedException ex) {
Logger.getLogger(NewClass.class.getName()).log(Level.SEVERE, null, ex);
}
谢谢。这是我没有意识到的语法。这是正确的答案。 – DavidPrabhu
@DavidPrabhu很高兴帮助:) –
另外,第二个线程使用一个处理程序来更新GUI。他们是更好的方法来做到这一点? – DavidPrabhu
第一,而(柜)应该足够,而不是同时(反==真) –
秒你调用run方法另一个线程..我不理解。您可以在单次运行方法中完成所有任务,无需在运行方法中创建另一个线程 –
我认为您的textView将更新得如此之快以至于用户无法查看该点的确切分数。 其次,使用Synchronized,以便您/用户/移动设备只能使用一次计数器/线程组件。 –