IntentService
インターネットからファイルをダウンロードするために(から開始される)を使用しBroadcastReceiver
たいのですが、ファイルが正常にダウンロードされたかどうか、およびファイルを解析するためにダウンロードされたかどうかをユーザーに通知したいと思います。ハンドラーを使用しhandleMessage
て my 内IntentService
で良い解決策ですか? 私が読んだことからIntentServices
、意図を処理した後に期限切れになる単純なワーカースレッドがあるので、ハンドラーがメッセージを処理しない可能性はありますか?
private void downloadResource(final String source, final File destination) {
Thread fileDownload = new Thread(new Runnable() {
@Override
public void run() {
try {
URL url = new URL(source);
HttpURLConnection urlConnection = (HttpURLConnection)
url.openConnection();
urlConnection.setRequestMethod("GET");
urlConnection.setDoOutput(true);
urlConnection.connect();
FileOutputStream fileOutput = new FileOutputStream(destination);
InputStream inputStream = urlConnection.getInputStream();
byte[] buffer = new byte[1024];
int bufferLength;
while ((bufferLength = inputStream.read(buffer)) > 0) {
fileOutput.write(buffer, 0, bufferLength);
}
fileOutput.close();
// parse the downloaded file ?
} catch (Exception e) {
e.printStackTrace();
destination.delete();
}
}
});
fileDownload.start();
}