【问题标题】:How to get the activity to wait before jumping to the next activity on its own in Android?如何让活动在Android中自行跳转到下一个活动之前等待?
【发布时间】:2012-07-15 01:12:50
【问题描述】:

我想创建一个活动,当我启动我的应用程序时打开,等待一段时间并跳转到下一个活动,而无需用户按任何操作。

这是我的代码:

public class MainActivity extends Activity {

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Thread thread = new Thread();
    thread.start();
}

public class waitSeconds extends Thread {

    public void run() {
        Log.i("MyActivity", "MyClass");
        try {
            wait(300);
            Intent intent = new Intent(MainActivity.this, main_window.class);
            startActivity(intent);

        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}

似乎它永远不会进入“运行”方法。

我该怎么做?

【问题讨论】:

  • 您必须致电 Thread thread = new waitSeconds(); 才能使用您的 waitSeconds 课程。

标签: java android multithreading wait


【解决方案1】:

将其包含在您的活动中:

 public class MainActivity extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    SplashHandler handler=new SplashHandler();
    Message msg = new Message();
    msg.what = 0;
    handler.sendMessageDelayed(msg, 3000);

}

private class SplashHandler extends Handler {

            public void handleMessage(Message msg)
              {
                switch (msg.what)
                {
                default:
                case 0:
                  super.handleMessage(msg);

                  Intent intent = new Intent(MainActivity.this,main_window.class);
                  startActivity(intent);
                  MainActivity.this.finish();
                }
              }
        }

【讨论】:

  • 谢谢!它工作得很好!但它说“这个处理程序类应该是静态的,否则可能会发生泄漏”我该如何解决这个问题?\
  • 将此作为您的 MainActivity 实现
  • 这正是我所做的。还是一样的问题。
  • 它在大多数情况下都可以正常工作,但这是它警告你的一个原因。我遇到了同样的问题,最终它造成了“内存泄漏”。请参阅this answer了解如何正确实现静态处理程序,这很容易,以后会省去麻烦。 stackoverflow.com/questions/11407943/…
【解决方案2】:

你需要这样的东西:

public class SplashScreenActivity extends Activity {

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.splash);

        new Thread() {

            public void run() {

                try {
                    Intent i = new Intent(SplashScreenActivity.this,
                            MainActivity.class);

                    Thread.sleep(2000);

                    startActivity(i);

                    finish();

                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }.start();

    }

}

【讨论】:

    猜你喜欢
    • 2014-10-21
    • 2014-04-19
    • 2021-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多