将进度微调器添加到app boolean

时间:2013-06-27 03:00:29

标签: java android progressdialog boolean-operations

在我的代码中,我有一个布尔值,可以通过首选项将信息安装到数据库中。它工作正常,但问题是现在有很多信息要添加到应用程序,当信息被添加到sqlite时我得到一个黑屏(仅在安装期间)。如何添加进度微调器,以便用户知道应用程序是否在安装过程中。我担心当他们盯着黑屏时他们会认为应用程序被破坏了。

        /** Insert list into db once */
    if (pref.getBoolean("isFirst", true)) {
        readBLContactsfromAssetsXMLToDB("list.xml");
        pref.edit().putBoolean("isFirst", false).commit();
    }

    addQuickActions();
}

1 个答案:

答案 0 :(得分:1)

首先,您可以使用AsyncTask来执行需要很长时间的流程。如果您不了解,it allows to perform background operations and publish results on the UI thread without having to manipulate threads and/or handlers.

但是如果你坚持不使用它,那么既然你正在阻止UI线程,你就无法显示对话框并同时执行你的工作。您需要为冗长的进程设置后台线程,并在UI线程上显示进度对话框。

网上有很多AsyncTaks的例子。仅供参考:

private class OuterClass extend Activity{
    //....

    @Override
    public void onCreate(Bundle savedInstanceState) {
        new performBackgroundTask ().execute();
    }
    //....
    private class performBackgroundTask extends AsyncTask < Void, Void, Void > 
     {
        private ProgressDialog dia;
        // This method runs in UI thread before the background process starts.      
        @Override
        protected void onPreExecute(){
            // Show dialog
            dia = new ProgressDialog(OuterClass.this);
            dia.setMessage("Installing...");
            dia.show();   
        }

        @Override
        protected Void doInBackground(Void... params) {
            // Do all the stuff here ... 
            addQuickActions();            
        }

        // Ececutes in UI thread after the long background process has finished
        @Override
        protected void onPostExecute(Void result){
              // Dismiss dialog 
              dia.dismiss();
        }
      }
}

您可能会看到How to display progress dialog before starting an activity in Android?

希望这会有所帮助。