如何使应用程序等待,然后开始活动或返回?

时间:2014-05-02 14:42:15

标签: 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)
        Thread.sleep(3000);
            Intent i = new Intent(this,myActivity.class);
            startActivity(i);

但不幸的是,这不起作用。这个doesent显示活动等待3秒并返回。但是,我希望它在返回之前显示其内容。我该怎么办?

2 个答案:

答案 0 :(得分:6)

您应该删除阻止ui线程的Thread.sleep(3000);。你永远不应该阻止ui thred。您可以使用Handler post延迟延迟,然后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()将完成工作

答案 1 :(得分:0)

这不是推荐的方法。 使用Thread.sleep你基本上强制活动等待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();
}