我使用Thread.sleep()
在Android中创建了一个启动画面。 (我知道另一种方法 - 使用handler
,但我现在必须使用此方法。)
我的代码如下:
public class SplashScreen extends Activity {
Thread t;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_spash_screen);
new myclass();
}
class myclass implements Runnable{
myclass()
{
t = new Thread();
t.start();
}
public void run()
{
try{
Thread.sleep(1000);
Intent i = new Intent(getApplicationContext(), MainActivity.class);
startActivity(i);
finish();
}
catch(InterruptedException e){
System.out.println("thread interrupted");
}
}
}
}
它没有显示任何错误,但是闪屏粘在屏幕上。
1秒后,它没有启动另一个intent
。
如果你知道错误,请帮助我。
答案 0 :(得分:1)
run
runnable方法,因为您没有将runnable传递给Thread
构造函数。所以把它传递给:
t = new Thread(this);
答案 1 :(得分:0)
试试这个,我总是在我的Splash Activities中使用这个代码。
public class SplashScreen extends Activity
{
private Thread mSplashThread;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.splash_screen);
mSplashThread = new Thread()
{
@Override
public void run()
{
try
{
synchronized (this)
{
wait(2000);
}
}
catch(InterruptedException ex) {
ex.printStackTrace();
}
finish();
startActivity(new Intent(getApplicationContext(),MainActivity.class));
}
};
mSplashThread.start();
}
@Override
public boolean onTouchEvent(MotionEvent evt)
{
if (evt.getAction() == MotionEvent.ACTION_DOWN)
{
synchronized (mSplashThread)
{
mSplashThread.notifyAll();
}
}
return true;
}
}