繁体   English   中英

创建数据库时如何显示加载屏幕?

[英]How do you show a loading screen while creating database?

  public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        loadData();
        setContentView(R.layout.preload);

        Thread thread = new Thread()
        {
            @Override
            public void run() {
               setUpDB();
               setContentView(R.layout.main);
            }
        };
        thread.start();
    }

因此,我希望它在数据库设置(setUpDB)时显示预加载视图,然后在安装完成后切换到主视图,更改为主视图。 我几乎可以正常工作了; 显示加载器直到大约80%然后崩溃,但是现在我什至无法获取它来显示加载器...如果我在线程中有setUpDB()崩溃,如果我在线程外将其显示为空白屏幕,直到完全加载为止。 我不记得以前的代码了...有什么想法吗?

使用assynctask尝试此操作。

         private class LoadAssync extends AsyncTask<String, Void, Void> { // Assync task

    protected void onPreExecute() {

            ProgressDialog dialog=ProgressDialog.show(this,"","Loading");

    }

    protected Void doInBackground(final String... args) {
         setUpDB();

    }

    protected void onPostExecute(final Void unused) {


        if (dialog.isShowing()) {
            dialog.dismiss();
        }

    }
}

执行assynctask

LoadAssync mAsyync1;

mAsyync1 = new LoadAssync();
            mAsyync1.execute(null);

声明一个处理程序,然后调用它来更新您的用户界面,

    public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);

ProgressDialog pd=ProgressDialog.show(this,"","Please Wait...");
Handler handler =new Handler()
{
 public void handleMessage(Message msg)
{
 if(msg.what==0)
{
 pd.dismiss();
 setContentView(R.layout.main);
}
}
};   
            Thread thread = new Thread()
            {
                @Override
                public void run() {
                  loadData();
                   setUpDB();
                  handler.sendEmptyMEssage(0);
                }
            };
            thread.start();
        }
    setUpDB();
    splashHandler.sendEmptyMessageDelayed(STOP_SPLASH, STOP_SPLASH_DELAY);

private Handler splashHandler = new Handler() {
    public void handleMessage(android.os.Message msg) {

        switch (msg.what) {
        case STOP_SPLASH:
                            progressbar.dismiss();  
            startActivity(new Intent(getApplicationContext(),
                    HomeScreenActivity.class));
            finish();
            break;
        }
    };
};

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM