我对 Andriod 开发非常陌生。我正在尝试使用计时器(来自 java.util)在 onCreate
后 1 秒删除 View ,这就是我所写的。
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);
}
不太清楚为什么,但我的应用程序每次都会崩溃。
计时器似乎有问题。我尝试删除计时器并在 OnCreatee
中添加 startup.setVisibility(View.GONE);
,效果很好。
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
时崩溃,那就太好了。
最佳答案
Not exactly sure why but my app crashes everytime unless I remove the timer and remove the view instantly.
使用 LogCat 检查与崩溃相关的 Java 堆栈跟踪。
您将看到异常是因为您尝试从后台线程修改 UI。您的 run()
方法在 Timer
和 TimerTask
提供的后台线程上运行。
我建议使用 postDelayed()
(View
上的一种方法,例如 ImageView
)而不是 Timer
>,因为这可以避免后台线程的开销并解决您的问题。
关于java - 为什么使用计时器删除 View 时应用程序崩溃?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16756737/