使用Thread.sleep()跳转到另一个活动

时间:2012-11-17 20:22:38

标签: android android-intent android-activity

我试图从活动一跳到活动二但是在1秒之后。所以我使用了Thread.sleep(1000),然后活动二出现在前面。它工作正常,但问题是我在活动一中给出了一个未显示的图像背景。

 public class Activity1 extends Activity {
 @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        try {

        Thread.sleep(1000);
        Intent i=new Intent(Activity1.this,Activity2.class );
        startActivity(i);
        } catch (InterruptedException e) {

            e.printStackTrace();
        }

    }

另外,我在Activity 2中包含了一个按钮,该按钮具有跳转到Activity 1的功能,在这种情况下,图像显示1秒钟,但不是第一次打开我的应用程序时。

2 个答案:

答案 0 :(得分:0)

直到onCreate()完成后才会构建UI。因此,如果您在onCreate()中启动活动2,您将永远不会看到活动1。

相反:

@Override
void onAttachedToWindow()  {
    // start activity 2
}

正如其他人在评论中所说,你绝不应该在UI线程上使用sleep。实际上,我希望Java使得使用睡眠变得更加困难,因为它使用得太多而且经常作为快速解决方案而避免正确的解决方案。

在这种情况下,您应该使用AsyncTask在一秒钟后启动第二个活动。

答案 1 :(得分:0)

您可以创建RelativeLayout并显示/隐藏它并仅使用1个活动

public class MyView extends RelativeLayout{

 private ImageView view = ....;

 ....
 view.setVisibility(View.VISIBLE);
 ....
 view.setVisibility(View.GONE);

}