在开始特定活动之前,我可以使用什么技术等待我的ContentProvider填充?我正在使用SyncAdapter加载ContentProvider。
通常我不想阻止我的UI。但我的应用程序是一个数据应用程序,数据来自远程服务器;从那里它保存在我的ContentProvider(sqlite db)中。所以我向用户展示了SplashActivity。我希望在将用户带到MainActivity之前加载内容提供程序。我怎么做?同样,我的应用是SplashActivity -> MainActivity
答案 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");
}
}
答案 1 :(得分:0)
我最终使用BroadcastReceiver解决了这个问题。 AsyncTask不起作用,因为我正在使用SyncAdapter。所以我等待SyncAdapter完成然后发送广播。我不确定这会有多糟糕,因为互联网可能对一些用户来说很慢。但到目前为止它确实有效。