1

Какую технику я могу использовать до тех пор, пока мой ContentProvider не будет заполнен до того, как я начну выполнять конкретную операцию? Я использую SyncAdapter для загрузки ContentProvider.Подождите, пока ContentProvider загрузится до начала действия

Обычно я не хочу блокировать свой интерфейс. Но мое приложение - это приложение данных, и данные поступают с удаленного сервера; оттуда он сохраняется в моем ContentProvider (sqlite db). Поэтому я показываю пользователю SplashActivity. Я хочу, чтобы контент-провайдер загружался, прежде чем я заберу пользователя в MainActivity. Как мне это сделать? Опять же, мое приложение SplashActivity -> MainActivity

ответ

1

Вы можете пользователь AsyncTask

Как:

private class DownloadFilesTask extends AsyncTask<URL, Integer, Long> { 

    //MAKE YOUR REQUEST HERE 
    protected Long doInBackground(URL... urls) { 
     int count = urls.length; 
     long totalSize = 0; 
     for (int i = 0; i < count; i++) { 
      totalSize += Downloader.downloadFile(urls[i]); 
      publishProgress((int) ((i/(float) count) * 100)); 
      // Escape early if cancel() is called 
      if (isCancelled()) break; 
     } 
     return totalSize; 
    } 

    protected void onProgressUpdate(Integer... progress) { 
     setProgressPercent(progress[0]); 
    } 

    //When finish the request CALL MainActivity HERE 
    protected void onPostExecute(Long result) { 
     showDialog("Downloaded " + result + " bytes"); 
    } 
} 

Или используйте Volley library

0

Я в конечном итоге решить это с помощью BroadcastReceiver. AsyncTask не работает, потому что я использую SyncAdapter. Поэтому я жду завершения SyncAdapter, а затем отправлю широковещательную рассылку. Я не уверен, насколько это плохо, поскольку интернет может быть медленным для некоторых пользователей. Но пока это работает.

Смежные вопросы