如何在Activity中做sample counter?这是行不通的。
public class MainActivity extends AppCompatActivity implements Runnable {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
run();
}
@Override
public void run() {
while (true) {
updateTv();
try {
Thread.sleep(17);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
public void updateTv() {
int counter = 100;
final TextView tv = (TextView) findViewById(R.id.tv);
tv.setText(String.valueOf(counter));
counter--;
}
}
最佳答案
在 onCreate()
中,您将在 UI 线程内启动一个无限循环,将其完全阻塞。或者你可以使用 Handler定期更新。也许使用更大的延迟并在某个时候停止它。
public class MainActivity extends AppCompatActivity implements Runnable {
private final Handler mHandler = new Handler();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
run();
}
@Override
public void run() {
updateTv();
mHandler.postDelayed(this, 17);
}
public void updateTv() {
int counter = 100;
final TextView tv = (TextView) findViewById(R.id.tv);
tv.setText(String.valueOf(counter));
counter--;
}
}
无论如何你应该阅读What is the Android UiThread (UI thread)当然。
关于android - 循环中的计数器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37099072/