我的任务是制作一个显示 5 秒钟的启动屏幕,然后应该出现登录屏幕。所以,我做了一个主要活动作为启动屏幕和显示登录表单的登录活动。在主要活动的 onCreate 函数中,我在 setContentView 函数之后设置了 thread.sleep(5000) 函数,然后加载登录活动。但问题是没有出现主要的活动内容。
那么我哪里错了?
这对我来说很好。请检查一下。
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);
}
};
}
它可能会帮助你。
当您在 onCreate() 中调用 Thread.sleep(5000) 方法时,它会阻止您的主 UI 线程执行任何操作。它等待睡眠指令 5 秒。它不允许应用程序为您的启动活动创建视图。在睡眠指导之后,我猜,你正在开始你的家庭活动。所以它发生得很快,第二个活动排在前面。这就是为什么您在启动活动中看不到任何内容的原因。还有一件事,使用 postDelayed(Runnable, timeInMillis) 方法显示启动屏幕并在 timeInMillis 间隔后启动您的主要活动。
您可以为此简单地使用延迟处理程序:
@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);
}