【发布时间】:2014-07-22 14:27:39
【问题描述】:
我知道有一些 Android Timer 帖子,但我真的看不出我在其中缺少什么。
用户按下一个按钮开始游戏,文本会随着经过的秒数更新,如果在八秒后按下该按钮,则会显示一条祝贺消息。
public static class PlaceholderFragment extends Fragment {
public static long startTime;
public static int time;
public static boolean buttonClicked1;
public static boolean buttonClicked2;
public static boolean win;
public static TextView todd;
public static TextView tim;
public static Button bob;
public PlaceholderFragment() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_main, container, false);
win = false;
bob = (Button)rootView.findViewById(R.id.button);
tim = (TextView)rootView.findViewById(R.id.message);
todd = (TextView)rootView.findViewById(R.id.timer);
startTime = System.currentTimeMillis();
time = 0;
buttonClicked1 = false;
buttonClicked2 = false;
bob.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View arg0) {
if(!buttonClicked1){
buttonClicked1 = true;
bob.setText("Push Here");
play();
}
else if(buttonClicked1) //Has game started
{
if(time>8)
buttonClicked2 = true;
}
}
});
return rootView;
}
public void play(){
playThread paul = new playThread();
paul.run();
}
public void winner(){
tim.setText("Congratulations");
}
public boolean checkWin(){
return buttonClicked2 ? true : false;
}
public void updateTime(){
if((System.currentTimeMillis() - startTime) % 1000 > 0){
startTime = System.currentTimeMillis();
time++;
}
todd.setText(""+time);
}
private class playThread implements Runnable{
public void run(){
System.out.println("Thread running");
while(!win){
updateTime();
win = checkWin();
winner();
}
}
}
}
}
在阅读this 之后,我决定实现 Runnable 而不是为 playThread 私有类扩展 Thread。
点击开始按钮后游戏变得无响应,其文本不会变为“Push Here”。
当然,我是一个完整的 Android 初学者,我怀疑问题出在我的线程实现上,但问题可能出在其他地方,因为我不太熟悉编程风格或约定。
感谢您查看此内容!
【问题讨论】:
标签: java android multithreading timer