我对Andriod的发展很新。我正在尝试使用Timer(来自java.util)在onCreate
之后1秒删除一个视图,这就是我写的。
Timer timer;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
ImageView startup = (ImageView) findViewById(R.id.startup);
startup.setVisibility(View.GONE);
}
}, 1000);
}
不确定为什么,但我的应用每次都会崩溃。
计时器似乎有问题。我已经尝试删除计时器并在startup.setVisibility(View.GONE);
中使用OnCreatee
,但它运行正常。
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ImageView startup = (ImageView) findViewById(R.id.startup);
startup.setVisibility(View.GONE);
//Didn't crash at all!!!
}
如果有人可以向我解释为什么我的应用在使用timer
时崩溃会很棒。
答案 0 :(得分:3)
不确定为什么,但我的应用程序每次都崩溃,除非我删除计时器并立即删除视图。
使用LogCat检查与崩溃关联的Java堆栈跟踪。
您将看到您的异常是因为您尝试从后台线程修改UI。您的run()
方法在Timer
和TimerTask
提供的后台线程上运行。
我建议使用postDelayed()
(View
上的方法,例如ImageView
)而不是Timer
,因为这可以避免后台线程的开销并解决您的问题问题