Java 如何让应用程序等待,然后启动活动或返回?
我希望我的活动在屏幕上显示3秒钟,然后返回上一个屏幕。但是当我使用Java 如何让应用程序等待,然后启动活动或返回?,java,android,android-intent,android-activity,Java,Android,Android Intent,Android Activity,我希望我的活动在屏幕上显示3秒钟,然后返回上一个屏幕。但是当我使用 protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.welcome_layout); TextView tvResult = (TextView)findViewById(R.id.textView1)
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.welcome_layout);
TextView tvResult = (TextView)findViewById(R.id.textView1)
Thread.sleep(3000);
Intent i = new Intent(this,myActivity.class);
startActivity(i);
但不幸的是,这不起作用。这显示活动等待3秒后返回。但是,我希望它在返回之前显示其内容。我该怎么做?您应该删除此线程。sleep3000;它阻止了ui线程。你不应该阻止用户界面。您可以使用带有延迟的postDelayed处理程序,然后使用startActivtiy
Handler handler = new Handler();
handler.postDelayed(new Runnable(){
@Override
public void run(){
// do something
}
}, 3000);
要返回到上一个活动,可以调用finish
此外,如果您需要返回到上一个活动3秒钟,为什么需要
Intent i = new Intent(this,myActivity.class);
startActivity(i);
调用finish将完成此任务这不是推荐的方法。 使用Thread.sleep,您将阻塞主UI线程3000毫秒。这意味着活动中的任何内容都不会工作,直到3秒过去 相反,您可以这样做: 编辑:现在它工作得很好
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.welcome_layout);
TextView tvResult = (TextView)findViewById(R.id.textView1)
new Thread(new Runnable()
{
@Override
public void run()
{
try
{
Thread.sleep(3000);
Intent i = new Intent(getApplicationContext(), myActivity.class);
startActivity(i);
}
catch (InterruptedException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}).start();
}
下面是添加代码部分后的正确答案;获取此错误:Android java.lang.IllegalMonitorStateException:之前未被线程锁定的对象wait@user3316779很抱歉已检查、修复并运行,现在运行正常。