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

问题描述:

我创建了一个完美的启动画面。现在我想要在显示启动画面的同时加载数据库,并且在数据库加载完后显示应用程序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); 
    } 
} 

}


有没有什么好的例子或建议?这个你能帮我吗。

+0

我发现教程UI THRE广告和背景[处理](http://www.vogella.de/articles/AndroidPerformance/article.html#overview_intro)。 并且是指该[答案](http://stackoverflow.com/questions/1979524/android-splashscreen/1982002#1982002)。 – Uttam

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

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); 
    } 
} 

尝试执行此操作这个......可能是它会帮助ü

+0

@Kartik我已经编辑了我的整个飞溅类,因为你有建议,是吗? –

+0

是的,它会工作,只需从你的oncreate函数new MyTask()调用这个函数。execute(this); – Andy

负载在一个线程中的数据基础和做一次进入下一个画面使用处理器,使用处理器类为Android .search处理程序和线程,你会得到很多的解决方案。

调用的活动,让我们把它叫做闪屏。从此活动中调用AsyncTask,以访问由您创建的另一个课程,从而延伸SQLiteOpenHelper。这个类初始化数据库。
当此的AsyncTask工作完毕,它返回控制UI线程,现在关闭了闪屏。

+0

它的演示在这里。退房:http://stackoverflow.com/questions/2222890/how-to-make-a-splash-screen-screen-visible-when-app-starts –

在你的闪屏的的onCreate写代码如下

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

的构造函数之前声明你的数据库的详细信息

+0

这将做UI线程的初始化,这可能使如果需要超过几秒钟,您的应用程序无法响应。考虑使用AsyncTask代替。 –