我有一个任务是制作一个启动画面,显示5秒钟,然后应该出现登录屏幕。所以,我有一个主要活动作为启动画面和登录活动,显示登录表单。 在main活动的onCreate函数中,我在setContentView函数之后设置了thread.sleep(5000)函数,然后加载登录活动。 但问题是主要活动内容没有出现。
那我哪里错了?
答案 0 :(得分:1)
这对我来说很好。请检查一下。
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.Window;
import com.om.utils.Constant;
import com.om.utils.Utils;
public class Splash extends Activity {
private static final int GoNextActivity = 1988;
private static final int FinishThisActivity = 1989;
private Intent intent = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.splash);
if (Utils.isOnline(Splash.this)) {
mHandler.sendEmptyMessageDelayed(GoNextActivity, 2000);
} else {
Utils.displayToast(Splash.this, Constant.NO_NETWORK_CONNECTION);
mHandler.sendEmptyMessageDelayed(FinishThisActivity, 2000);
}
}
Handler mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
switch (msg.what) {
case GoNextActivity:
intent = new Intent(Splash.this, HomeActivity.class);
startActivity(intent);
finish();
break;
case FinishThisActivity:
finish();
break;
default:
break;
}
super.handleMessage(msg);
}
};
}
它可能对你有帮助。
答案 1 :(得分:0)
您可以简单地使用延迟处理程序:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
//launch new activity here
}
}, 5000);
}
答案 2 :(得分:0)
当你在onCreate()中调用Thread.sleep(5000)方法时,它会阻止你的主UI线程做任何事情。它等待睡眠指令5秒钟。它不允许应用为您的启动活动创建视图。睡觉指导后,我想,你正在开展你的家庭活动。所以它会快速连续发生,第二项活动就在眼前。这就是为什么你无法看到任何关于启动活动的原因。 还有一件事,使用postDelayed(Runnable,timeInMillis)方法显示启动画面并在timeInMillis间隔后启动主活动。