Showing progress dialog while loading database in Android

后端 未结 2 473
感情败类
感情败类 2021-01-25 19:09

I am loading a database without problems in a SQLiteOpenHelper>>onCreate(SQLiteDatabase) method.

However, when I try to wrap the loading of the datab

相关标签:
2条回答
  • 2021-01-25 19:20

    I would do this:

    private ProgressDialog progressDialog;
    private Handler handler;
    
    public yourConstructor(Context context){
        progressDialog = new ProgressDialog(context);
        progressDialog.setMessage("wait");
        progressDialog.setCancelable(true);
        handler = new Handler();
    }
    
    @Override
    public void onCreate(SQLiteDatabase db) { 
        progressDialog.show();
        new Thread(new Runnable() {
            @Override
            public void run() {
    
                //your bd access here
    
                handler.post(new Runnable() {
                    @Override
                    public void run() {
                        progressDialog.cancel();
                    }
                );
            }
        }).start();
    }
    
    0 讨论(0)
  • 2021-01-25 19:22

    You haven't shown us where you're closing the db so I'm going to assume you're closing it soon after:

    new LoadDBTask(context, db, progressDialog, alertDialog).execute
      (new Integer[] {scriptId});
    

    I.e. in your calling class and this is most likely where your error lies. Move the DB closing statement to the onPostExecute method and that should solve your issue.

    Of course, you will have to override onPostExecute in LoadDBTask to do this. Remember that AsyncTask is asynchronous and as such it will not block at the new LoadDBTask statement I mentioned.

    0 讨论(0)
提交回复
热议问题