我正在开发一个将一些图形 UI 事件与音轨同步的应用程序。现在,在 onCreate 退出后,您需要按下一个按钮来设置一切。我正在尝试添加功能以使音频/图形交互在所有内容布局后 10 秒开始。
我的第一个想法是,在 onCreate 结束时,使用此处的解决方案使 UI 线程休眠 10000 毫秒,然后调用 button.onClick()。不过,这对我来说似乎是一种非常糟糕的做法,而且无论如何都没有尝试过。有没有实现此自动启动功能的好方法?
永远不要在 UI 线程上设置睡眠/延迟。相反,使用Handler
它的postDelayed方法在你的Activity的onCreate、onStart或onResume中完成它。例如:
@Override
protected void onResume() {
super.onResume();
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
//do whatever you want here
}
}, 10000L); //the runnable is executed on UI-thread after 10 seconds of delay
}
Handler handler=new Handler();
Runnable notification = new Runnable()
{
@Override
public void run()
{
//post your code............
}
};
handler.postDelayed(notification,10000);
是的,让 UI 线程进入睡眠状态并不是一个好主意。
试试这个
private final ScheduledExecutorService worker = Executors.newSingleThreadScheduledExecutor();
worker.schedule(task, 10, TimeUnit.SECONDS);