因为Thread我的意图没有开始

时间:2018-02-20 12:23:29

标签: android android-intent thread-sleep

代码有什么问题?我无法找到任何错误,并且启动屏幕无法获得处置,因此无法实现意图。我为这个启动画面尝试了不同的代码,它没有任何问题。我只想知道为什么这段代码不起作用。

public class Splash extends Activity {

    @Override
    protected void onCreate(Bundle sScreen) {
        super.onCreate(sScreen);
        setContentView(R.layout.splash);

        Thread timer = new Thread(){
            public void Run(){
                try{
                    sleep(1000);
                }catch(InterruptedException e){
                    e.printStackTrace();
                }finally {
                    Intent intent = new Intent("com.projects.ziham.learning.STARTINGPOINT");
                    startActivity(intent);
                }
            }
        };
        timer.start();
    }
}

并且我更改了意图参数,这也是不工作的例子:

Intent intent = new Intent(Splash.this,StartingPoint.class);

6 个答案:

答案 0 :(得分:2)

试试这个:

new Handler().postDelayed(new Runnable() {
    @Override
    public void run() {
        startActivity(new Intent(Splash.this, StartingPoint.class));
    }
}, 1000);

答案 1 :(得分:0)

请在延迟一段时间后尝试以下方法重定向

 new Handler().postDelayed(new Runnable() {
               @Override
               public void run() {
                       Intent i = new Intent(SplashScreen.this, yourActivity.class);
                       startActivity(i);
                      finish();
               }
           }, 1000);

请试试这个

    Thread t=new Thread(new Runnable() {
        @Override
        public void run() {
            System.out.println("run called");
             try {
                Thread.sleep(10);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }finally {
                System.out.println("finally called");
            }
        }
    });
    t.start();

答案 2 :(得分:0)

而不是Timer,您可以使用Handler

new Handler().postDelayed(new Runnable() {
             @Override
             public void run() {
             Intent intent = new Intent(Splash.this, StartingPoint.class);
                    startActivity(intent);
             }
}, 3000);

答案 3 :(得分:0)

因此,从您的代码中,假设这是一个闪屏,这是一个相当公平的假设。

虽然现在有几个答案可以解决您的意图无法启动的问题,但this文章演示了实现启动画面的正确方法。

信用:Big Nerd Ranch

答案 4 :(得分:0)

您必须使用postDelayed中的Handler方法,或者您需要在UIThread中运行startActivity

runOnUIThread(new Runnable(){
    Intent intent = new Intent("com.projects.ziham.learning.STARTINGPOINT");
    startActivity(intent); 
});

答案 5 :(得分:0)

将Run替换为代码中的run并使用Handler。

Thread timer = new Thread(new Runnable() {
    @Override
    public void run() {
        try{
            Thread.sleep(1000);
        }catch(InterruptedException e) {
           e.printStackTrace();

        } finally {
            Intent intent = new Intent(MainActivity.this,SecondPage.class);
            startActivity(intent);
        }
    }


    });
timer.start();