Android: descarga el archivo desde el servidor y muestra el progreso de la descarga en la barra de notificación mediante AsyncTask
Estoy utilizando este ejemplo para descargar un archivo de un servidor usando AsycTask
y para mostrar el progreso downlaod en una barra de notificación. Acabo de modificar el método doInBackground para bajar mi archivo:
@Override protected Void doInBackground(String... Urls) { //This is where we would do the actual download stuff //for now I'm just going to loop for 10 seconds // publishing progress every second try { URL url = new URL(Urls[0]); URLConnection connection = url.openConnection(); connection.connect(); // this will be useful so that you can show a typical 0-100% // progress bar int fileLength = connection.getContentLength(); // download the file InputStream input = new BufferedInputStream(url.openStream()); OutputStream output = new FileOutputStream( _context.getFilesDir() + "/file_name.apk"); byte data[] = new byte[1024]; long total = 0; int count; while ((count = input.read(data)) != -1) { total += count ; // publishing the progress.... publishProgress((int) (total * 100 / fileLength)); output.write(data, 0, count); } output.flush(); output.close(); input.close(); } catch (Exception e){ e.printStackTrace(); } return null; } protected void onPreExecute() { // Create the notification in the statusbar mNotificationHelper.createNotification(); } protected void onPostExecute(Void result) { // The task is complete, tell the status bar about it mNotificationHelper.completed(); } protected void onProgressUpdate(Integer... progress) { // This method runs on the UI thread, it receives progress updates // from the background thread and publishes them to the status bar mNotificationHelper.progressUpdate(progress[0]); }
Todo va bien, excepto que no puedo bajar la barra de notificación. ¿Por qué?
- FCM notificaciones remotas de carga útil para iOS y Android
- Actualizar una notificación en curso en silencio
- NameError: uninitialized constant Rpush :: Gcm Estoy intentando usar rpush para mi aplicación móvil. Pero sigo recibiendo este error
- No se pudo expandir RemoteViews para: StatusBarNotification
- NotificationManager getActiveNotifications () para dispositivos antiguos
- Icono de muestra de Android en la barra de estado
- Cómo suprimir la notificación en la pantalla de bloqueo en Android 5 (Lollipop), pero dejarlo en el área de notificación?
- ¿Es posible cancelar todas las notificaciones que tienen una etiqueta determinada?
- ¿Debería llamar a WakeLock antes de crear una notificación?
- Android: ¿cómo abrir una notificación de envío directo que, cuando se cierre, vuelve a la pantalla de inicio?
- Mostrar siempre servicio en la barra de notificación
- Administrador de alarmas y notificación en android
- La notificación abre actividad, se pulsa el botón de retroceso, se abre la actividad principal?
A continuación se recoge de los comentarios.
Puede poner por favor un sueño (1000) método antes de publishProgress y comprobar. Solo una suposición
–
Sí, funciona, pero la descarga se está ralentizando
Espero que hayas entendido el problema. Puesto que usted está actualizando la barra de notificación con mucha frecuencia, no puede ser capaz de tirar hacia abajo. Al aumentar el tamaño de los datos o al actualizar la barra de progreso en cada 4 o más kb en lugar de 1kb, puede evitar este problema.
Arriba no ralentizará la descarga de datos.
Debe anular el método onProgressUpdate para actualizar su interfaz de usuario.
- Android – ¿Cómo cargar la aplicación HelloWorld en mi teléfono?
- No se pudo encontrar la clase 'android.widget.ThemedSpinnerAdapter'