初始化数据库时如何显示启动画面?

时间:2011-10-04 07:11:47

标签: android

我创建了一个完美的启动画面。现在我想在显示启动画面的同时加载数据库,并且在加载数据库之后完全显示应用程序UI。
我有以下代码来做这个是对的吗?

public class Splash extends Activity{

@Override
protected void onCreate(Bundle bundle) {
    super.onCreate(bundle);
    new LoadDatabase().execute();
}

@Override
protected void onPause() {
    super.onPause();
    finish();
}

// Load DB
protected class LoadDatabase extends AsyncTask<Context, Integer, String> 
{ 
     @Override 
     protected String doInBackground( Context... params ) { 
         try {
            new DatabaseHelper(getApplicationContext()).initializeDatabase();
        } catch (IOException e) {
            e.printStackTrace();
        }
         return "";
     } 

     @Override 
     protected void onPreExecute() { 
        super.onPreExecute(); 
        setContentView(R.layout.splash);
     } 

     @Override
    protected void onPostExecute(String result) {           
        super.onPostExecute(result);
         Intent openMain = new Intent("com.nepways.MAIN"); 
         startActivity(openMain); 
    }
}

}


有什么好的例子或建议吗?请帮帮我。

4 个答案:

答案 0 :(得分:3)

您可以通过异步或线程和处理程序

执行此操作
protected class MyTask extends AsyncTask<Context, Integer, String> 
{ 
     @Override 
     protected String doInBackground( Context... params ) 
     { 
      // write ur database functionality 
     } 

     // -- gets called just before thread begins 
     @Override 
     protected void onPreExecute() 
     { 
        // u may show ur progressbar or spalsh screen
        super.onPreExecute(); 

     } 


     // -- called as soon as doInBackground method completes 
     @Override 
     protected void onPostExecute() 
     { 
       super.onPostExecute(result); 
      // Intent openMain = new Intent("com.nepways.MAIN"); 
            startActivity(openMain); 
     } 
} 

试试这个......可能会帮助你

答案 1 :(得分:2)

调用一个Activity,我们称之为SplashScreen。从此活动调用AsyncTask,该活动访问您创建的另一个类,扩展SQLiteOpenHelper。该类初始化数据库 当此AsyncTask完成工作时,它将控件返回到UI线程,现在关闭SplashScreen。

答案 2 :(得分:0)

将数据库加载到一个线程中,一旦完成,使用处理程序转到下一个屏幕,使用处理程序类为android .search处理程序和线程,你会得到很多解决方案。

答案 3 :(得分:-1)

在onCreate of SplashScreen中编写以下代码

    myDataBase=this.openOrCreateDatabase(DB_NAME, MODE_PRIVATE, null);
    DatabaseHelper dbHelper = new DatabaseHelper(getApplicationContext());
    dbHelper.openDataBase();

在构造函数

之前声明数据库详细信息