android - 启动画面前的白屏

标签 android performance

我的 SplashScreenActivity 有问题,当我在手机上启动我的应用程序时,它会显示大约 0.5 秒的白屏。 MainActivy 扩展了 FragmentActivity,在 AndroidManifest 中,我将 SplashScreenActivity 声明为启动器,将纵向模式声明为 screenOrientation

代码:

public class SplashScreenActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    setContentView(R.layout.splashscreen);
    randomSplash();

    Thread splashscreen = new Thread() {

        public void run() {
            try {
                Thread.sleep(1000);
                Intent mainScreen = new Intent("com.rm.jkrm.MAINACTIVITY");
                startActivity(mainScreen);
            } catch (InterruptedException e) {

            } finally {
                finish();
            }
        }
    };
    splashscreen.start();
}

private void randomSplash(){
    Random random = new Random();
    int i = random.nextInt(4);

    LinearLayout ln = (LinearLayout) findViewById(R.id.splashscreen);

    switch(i){
    case 1: 
        ln.setBackgroundResource(R.drawable.splash1);
        break;
    case 2: 
        ln.setBackgroundResource(R.drawable.splash2);
        break;
    case 3: 
        ln.setBackgroundResource(R.drawable.splash3);
        break;
    default: 
        ln.setBackgroundResource(R.drawable.splash0);
        break;
    }
}
}

XML:

 <?xml version="1.0" encoding="utf-8"?>
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:id="@+id/splashscreen"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:orientation="vertical">
</LinearLayout>

最佳答案

 Thread splashscreen = new Thread() {

        public void run() {
            try {
                Thread.sleep(1000);
                Intent mainScreen = new Intent("com.rm.jkrm.MAINACTIVITY");
                startActivity(mainScreen);
            } catch (InterruptedException e) {

            } finally {
                finish();
            }
        }
    };
    splashscreen.start();

这是你的问题 UI 线程休眠不是一个好主意,而是使用处理程序 我认为这也可能导致异常。

Handler h=new Handler();
        h.postDelayed(new Runnable() {

            public void run() {
                // TODO Auto-generated method stub
                startActivity(new Intent(Splash_Activity.this,Main_Activity.class));
                finish();
            }
        }, 2000);
    }

关于android - 启动画面前的白屏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15067615/

相关文章:

c++ - 在堆上分配时对齐内存

performance - 检查 Web 应用程序性能的最佳方法

java - 添加到大型 Java 集合,性能瓶颈

python - 提高速度 pytesseract OCR

java - 如何访问已上传到 NanoHTTPD 的文件?

android - actionbar sherlock 用下拉图标替换主页图标或完全删除它

android - SectionIndexer - 与 ArrayAdapter 和 CustomObject 一起使用?

javascript - 改进 Angular 中的 ng-repeat(只读 html 表格)渲染性能

Android - 无法启用 BroadcastReceiver

Android登录按钮在按下时隐藏