0

我想使用 a IntentService(从 a 开始BroadcastReceiver)从 Internet 下载文件,但我想通知用户文件是否下载成功以及是否已下载以解析文件。handleMessage在我的内部使用处理程序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(通过 Activity),那么您可能希望使用 startActivity() 方法启动您的应用程序的一个活动(请参阅android start activity from service

如果您不需要任何 UI 内容,只需IntentService在下载后在右侧进行解析即可。

于 2012-09-10T11:41:15.093 回答