2013-06-27 3 views
0

В моем коде у меня есть логическое значение для установки информации в базу данных по предпочтению. Он отлично работает, но теперь проблема заключается в том, что в приложение добавлено много информации, и я получаю черный экран, в то время как информация добавляется в sqlite (только во время установки). Как я могу добавить счетчик прогресса, чтобы пользователи знали, что приложение находится в процессе установки. Я боюсь, они подумают, что приложение сломано, когда они смотрят на черный экран.add progress spinner to app boolean

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

    addQuickActions(); 
} 
+0

Обратитесь к http://stackoverflow.com/questions/11752961/how-to-show-a-progress-spinner-in-android-when-doinbackground-is-being-execut. – frogmanx

ответ

1

Сначала вы можете использовать AsyncTask для выполнения процессов, которые занимают много времени. Если вы этого не знаете, it allows to perform background operations and publish results on the UI thread without having to manipulate threads and/or handlers.

Но если вы настаиваете на том, чтобы не использовать это, то, поскольку вы блокируете поток пользовательского интерфейса, вы не можете отображать диалоговое окно и делать свои вещи одновременно. Вы должны иметь фоновый поток для продолжительного процесса и показывать диалог выполнения в потоке пользовательского интерфейса.

Существует множество примеров 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?

Надеются, что это помогает.