SyncAdapterは、この種のシナリオで使用するためのものではありません。SyncAdapter
データのバックグラウンド同期を目的としており、ユーザーには表示されません。
あなたのケースはAsyncTaskに最適のように聞こえます。publishProgress()
これにより、ネットワークタスクが別のスレッドで発生しているときに、プログレスバーを更新するために使用できます。あなたはオンラインでたくさんの情報と例を見つけることができますAsyncTask
。
上記のリンクからの例:
private class DownloadFilesTask extends AsyncTask<URL, Integer, Long> {
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]);
}
protected void onPostExecute(Long result) {
showDialog("Downloaded " + result + " bytes");
}
}
次のように実行して実行します。
new DownloadFilesTask().execute(url1, url2, url3);
チュートリアル(単にグーグルによって見つけられた)で、これは別の例です:
http://androidresearch.wordpress.com/2012/03/17/understanding-asynctask-once-and-forever/