How to make app wait and then start activity or go back?

前端 未结 2 469
天命终不由人
天命终不由人 2021-01-28 09:30

I want my activity to show a screen for 3 seconds, then go back to previous screen. But when i use

protected void onCreate(Bundle savedInstanceState) {
                 


        
相关标签:
2条回答
  • 2021-01-28 09:43

    This is not the recommended way to do this. Using Thread.sleep you're blocking the main UI thread for 3000 milliseconds. This means that nothing in the activity will work until 3 seconds are passed.

    Instead, you could do this: edited: now it works well.

    @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();
    }
    
    0 讨论(0)
  • 2021-01-28 09:45

    You should remove this Thread.sleep(3000); which block the ui thread. You should never block the ui thred. You can use a Handler postDelayed with a delay and then startActivtiy.

    Handler handler = new Handler();
    handler.postDelayed(new Runnable(){
    @Override
      public void run(){
       // do something
     }
     }, 3000);
    

    To go back to previous Activity you can call finish().

    Also if you need to go back to the previous activity for 3 seconds why do you need

    Intent i = new Intent(this,myActivity.class);
    startActivity(i);
    

    Calling finish() will do the job

    0 讨论(0)
提交回复
热议问题