0

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

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

    addQuickActions();
}
4

1 回答 1

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

您可能会看到如何在 Android 中启动活动之前显示进度对话框?

希望这可以帮助。

于 2013-06-27T04:03:50.903 回答