适用于"应用程序"类的Android Splash屏幕

use*_*146 5 android splash-screen android-activity

我有一个Android应用程序,我扩展了基础Application类,以便设置一些全局变量.

public class MyApplication extends Application {

 private ArrayList<ModelClass> master_list; // global variable 1
 private DataBaseHelper db_helper; // global variable 2

 @Override
 public void onCreate() {
  super.onCreate();
  //do database work that will take about 5 seconds
 }
}
Run Code Online (Sandbox Code Playgroud)

我想在Application类工作时(即在创建主活动之前)向用户显示启动画面.有没有办法做到这一点?

Mat*_*rla 5

您可以将SplashActivity作为开始活动.

当MyApplication完成它的工作后,您可以开始主要活动并处理启动画面.

但是不要在onCreate中执行繁重的数据库工作,创建另一个函数并在那里执行,否则您的启动活动将不会显示.

public class SplashActivity extends Activity
    @override
    protected void onResume() {
    //Create a thread
    new Thread(new Runnable() {
            public void run() {
                //Do heavy work in background
                ((MyApplication)getApplication()).loadFromDb();
                startActivity(new Intent(SplashActivity.this, MainActivity.class));
                finish(); //End this activity
            }
        }).start();
    }
}
Run Code Online (Sandbox Code Playgroud)