0

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();
}
4

1 に答える 1

1

ユーザーに通知する通知を作成するだけの場合は、ダウンロード後に IntentService で作成できます (「Android のサービスから通知を送信する」を参照) 。

より精巧な UI を (アクティビティを介して) 表示したい場合は、おそらく startActivity() メソッドを使用してアプリのアクティビティの 1 つを開始することをお勧めします ( android start activity from serviceを参照) 。

UI が必要ない場合は、IntentServiceダウンロード直後に解析を行ってください。

于 2012-09-10T11:41:15.093 に答える