写了一个Refresh实现Runnable,把TextView的更新操作(for循环延时更新)放进去了。
在Oncreate中,开启一个线程,把一个Refresh对象整个放在了handler中。
结果当然是错误的,但是我不懂为什么不能整个放进去。
class Refresh implements Runnable {
@Override
public void run() {
for (int i = 0; i <= 100; i++) {
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
tv.setText("" + i);
}
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
init();
new Thread(){
@Override
public void run() {
super.run();
handler.post(new Refresh());
}
}.start();
}
这样改了改就可以
class Refresh implements Runnable {
@Override
public void run() {
for (int i = 0; i <= 100; i++) {
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
final int finalI = i;
handler.post(new Runnable() {
@Override
public void run() {
tv.setText("" + finalI);
}
});
}
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
init();
new Thread(new Refresh()).start();
}
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
init();
new Thread(){
@Override
public void run() {
super.run();
handler.post(new Refresh());
}
}.start();
}
因为你在onCreate里面又新建了一个线程,跟Refresh 是完全独立的