在开始活动之前等待ContentProvider加载

时间:2016-07-21 01:01:42

标签: android android-layout android-activity android-contentprovider android-syncadapter

在开始特定活动之前,我可以使用什么技术等待我的ContentProvider填充?我正在使用SyncAdapter加载ContentProvider。

通常我不想阻止我的UI。但我的应用程序是一个数据应用程序,数据来自远程服务器;从那里它保存在我的ContentProvider(sqlite db)中。所以我向用户展示了SplashActivity。我希望在将用户带到MainActivity之前加载内容提供程序。我怎么做?同样,我的应用是SplashActivity -> MainActivity

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

我最终使用BroadcastReceiver解决了这个问题。 AsyncTask不起作用,因为我正在使用SyncAdapter。所以我等待SyncAdapter完成然后发送广播。我不确定这会有多糟糕,因为互联网可能对一些用户来说很慢。但到目前为止它确实有效。