Java 如何让应用程序等待,然后启动活动或返回?

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)

我希望我的活动在屏幕上显示3秒钟,然后返回上一个屏幕。但是当我使用

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很抱歉已检查、修复并运行,现在运行正常。