Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 复制数据库时显示progressbar_Android_Database_Sqlite - Fatal编程技术网

Android 复制数据库时显示progressbar

Android 复制数据库时显示progressbar,android,database,sqlite,Android,Database,Sqlite,在我的应用程序的第一次运行中,我必须将数据库文件复制到数据文件夹。这大约需要10秒,在这段时间内,用户会看到一个黑屏。我想使用AsynTask技术来显示进度条。但它不起作用,我看到在黑屏消失后progressbar 用这段代码我调用复制数据库类,也调用AsynTsk进程 new asyn().execute(); try { myDbHelper.createDataBase(); } catch (IOException ioe) {

在我的应用程序的第一次运行中,我必须将数据库文件复制到数据文件夹。这大约需要10秒,在这段时间内,用户会看到一个黑屏。我想使用AsynTask技术来显示进度条。但它不起作用,我看到在黑屏消失后progressbar

用这段代码我调用复制数据库类,也调用AsynTsk进程

    new asyn().execute();
    try {
        myDbHelper.createDataBase();

    } catch (IOException ioe) {
        // throw new Error("Unable to create database");
    }
这是我的密码:

    public class asyn extends AsyncTask<String, Integer, String> {
      ProgressDialog dialog;  
      @Override
      protected void onPreExecute()
      {  
        //loading toast
            //final DataBaseHelper myDbHelper = new DataBaseHelper(this);
            String firstload2 = myDbHelper.getfirstload();
            if(firstload2.matches("1")) {
                 dialog=new ProgressDialog(DictionaryActivity.this);
                   dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
                   dialog.setMax(100);
                   dialog.show();
                myDbHelper.changefirstload();
            }



      }  
      @Override
      protected String doInBackground(String... params) {
       // TODO Auto-generated method stub 
       // perform desired task in this doInBackground Block.
       for(int i=0;i<20;i++)
       {
        publishProgress(5);
        try {
         Thread.sleep(100);
        } catch (InterruptedException e) {
         // TODO Auto-generated catch block
         e.printStackTrace();
        }
       }

       return "";
      }
      @Override
      protected void onProgressUpdate(Integer... values) {
       // TODO Auto-generated method stub
       super.onProgressUpdate(values);
       dialog.incrementProgressBy(5);   
       }

      @Override
       protected void onPostExecute(String result)
      {
        dialog.dismiss();    
       AlertDialog.Builder a=new Builder(DictionaryActivity.this);
       a.setMessage("Successfully Done");
       a.setTitle("Try");
       a.setPositiveButton("OK",null);
       a.show();
          }  
     }
公共类asyn扩展异步任务{
进程对话;
@凌驾
受保护的void onPreExecute()
{  
//上膛吐司
//final DataBaseHelper myDbHelper=新的DataBaseHelper(this);
字符串firstload2=myDbHelper.getfirstload();
如果(firstload2.matches(“1”)){
dialog=新建ProgressDialog(DictionaryActivity.this);
设置ProgressStyle(ProgressDialog.STYLE_水平);
dialog.setMax(100);
dialog.show();
myDbHelper.changefirstload();
}
}  
@凌驾
受保护的字符串doInBackground(字符串…参数){
//TODO自动生成的方法存根
//在此doInBackground块中执行所需任务。

for(int i=0;i
myDbHelper.changefirstload();
应该在
doInBackground()
方法中。
onPreExecute()
在UI线程上执行

就进度条而言,这有点困难。就我个人而言,我会做一个不确定的进度条(加载时只是一个旋转图标或其他东西)。但是,如果你想有一个%bar,你需要将该方法分解为多个方法,然后在它们之间更新你的进度