Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Stylish2013
7 / 7 / 1
Регистрация: 20.04.2013
Сообщений: 666
#1

Как можно в progressBar вернуть прогресс нужного потока? - Программирование Android

24.03.2014, 19:30. Просмотров 699. Ответов 4
Метки нет (Все метки)

На разных фрагментах(экранах) начинаю скачку файла и именно на лаяуте располагается progressBar, при переходе с экрана на экран progressBar теряет свой прогресс и не виден ход загрузки файла. Одновременно можно качать файлы на разных экранах. Как можно в progressBar вернуть прогресс нужного потока, ведь в фоне они работают?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.03.2014, 19:30
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как можно в progressBar вернуть прогресс нужного потока? (Программирование Android):

Обновление ProgressBar из основного потока - Программирование Android
Здравствуйте! Итак, имеется долго выполняющийся код , внутри которого время от времени должно обновляться значение ProgressBar. Следом...

Как сделать, чтобы ProgressBar отображал прогресс выполнения цикла - Visual Basic
Пришла очередь разобраться с ProgressBar. Сделал следующие: 1. Создал форму, 2. подключил Microsoft Windows Common Controls, 3....

Как вернуть ProgressBar на панель инструментов - Visual Basic
У меня такая вот фигня (извините) Раньше был прогресс бар, а теперь его нету? Что делать и как его восстановить?

Прогресс обновления в ProgressBar - C#
Здравствуйте, у меня есть готовый код который обновляет приложение. Я хочу чтобы прогресс обновления отображался в ProgressBar. Я так...

.NET 4.x Как работать с progressbar из другого потока - C# WPF
Сразу после начала работы программы вылетает такая ошибка "Дополнительные сведения: Вызывающий поток не может получить доступ к данному...

Как двигать progressBar из другого потока? - C++ Qt
когда вызываю LP_WI->ui.progressBar->setValue((i * 100)/ to); из потока, то вылетает ошибка, скрин ниже, как правльно делать?

4
NiRamz
211 / 211 / 16
Регистрация: 26.12.2010
Сообщений: 691
24.03.2014, 19:32 #2
добавить коллбек который сообщал бы текущий прогресс и подписывать текущий фрагмент на него.
0
Stylish2013
7 / 7 / 1
Регистрация: 20.04.2013
Сообщений: 666
24.03.2014, 19:37  [ТС] #3
NiRamz, Я был бы очень благодарен примером кода.
0
NiRamz
211 / 211 / 16
Регистрация: 26.12.2010
Сообщений: 691
24.03.2014, 19:47 #4
как реализована работа в фоне?
0
Stylish2013
7 / 7 / 1
Регистрация: 20.04.2013
Сообщений: 666
25.03.2014, 18:53  [ТС] #5
Java
1
2
DownloadTask downloadTask = new DownloadTask(getActivity())
downloadTask.execute("link.rar");
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
 // Download class
    private class DownloadTask extends AsyncTask<String, Integer, String> {
 
 
        private Activity context;
        private PowerManager.WakeLock mWakeLock;
 
        public DownloadTask(Activity context) {
        this.context = context;
        }
 
        @Override
        protected String doInBackground(String... sUrl) {
            InputStream input = null;
            OutputStream output = null;
            HttpURLConnection connection = null;
            try {
                URL url = new URL(sUrl[0]);
                connection = (HttpURLConnection) url.openConnection();
                connection.connect();
 
                // expect HTTP 200 OK, so we don't mistakenly save error report
                // instead of the file
                if (connection.getResponseCode() != HttpURLConnection.HTTP_OK) {
                    return "Server returned HTTP " + connection.getResponseCode()
                            + " " + connection.getResponseMessage();
                }
 
                // this will be useful to display download percentage
                // might be -1: server did not report the length
                int fileLength = connection.getContentLength();
 
                // download the file
                input = connection.getInputStream();
                output = new FileOutputStream("/sdcard/file_name.extension");
 
                byte data[] = new byte[4096];
                long total = 0;
                int count;
                while ((count = input.read(data)) != -1) {
                    total += count;
                    // publishing the progress....
                    if (fileLength > 0) // only if total length is known
                        publishProgress((int) (total * 100 / fileLength));
                    output.write(data, 0, count);
                }
            } catch (Exception e) {
                return e.toString();
            } finally {
                try {
                    if (output != null)
                        output.close();
                    if (input != null)
                        input.close();
                } catch (IOException ignored) {
                }
 
                if (connection != null)
                    connection.disconnect();
            }
           return null;
        }
 
 
        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            // Take CPU lock to prevent CPU from going off if the user presses the power button during download
            PowerManager pm = (PowerManager) context.getSystemService(getActivity().POWER_SERVICE);
            mWakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK,
                    getClass().getName());
            mWakeLock.acquire();
        }
 
        @Override
        protected void onProgressUpdate(Integer... progress) {
            super.onProgressUpdate(progress);
 
            // if we get here, length is known, now set indeterminate to false
            progressBar.setIndeterminate(false);
            progressBar.setMax(100);
            progressBar.setProgress(progress[0]);
 
//            System.out.println(progress[0]);
        }
 
        @Override
        protected void onPostExecute(String result) {
            mWakeLock.release();
            if (result != null)
                Toast.makeText(context,"Download error: "+result, Toast.LENGTH_LONG).show();
            else
                Toast.makeText(context,"File downloaded", Toast.LENGTH_SHORT).show();
        }
 
    }
Добавлено через 22 часа 21 минуту
NiRamz, может вы сможете подсказать что-нибудь по этому поводу?
0
25.03.2014, 18:53
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.03.2014, 18:53
Привет! Вот еще темы с ответами:

.NET 4.x Прогресс загрузки файлов в ProgressBar - C#
Здравствуйте, есть вот такой вот код: using System; using System.Collections.Generic; using System.Windows.Forms; using System.Net;...

Отобразить в ProgressBar прогресс сортировки - C#
Парни, помогите пожалуйста. У меня на кнопку происходит сортировка, нужно в прогресс бар отображать ход ее, скока уже выполнилось) Как это...

ProgressBar - отобразить прогресс скачивания файла - C#
Народ обясните пожалуста как он работает.Тоесть вот мне надо скачать файл (например архив какойто типо прайсл-лист).А мне зделать так чтоб...

.NET 4.x Отобразить в ProgressBar прогресс поиска файлов - C#
Доброго времени суток. Я написал программу которая ищет файлы на локальных дисках и хотел бы прикрепить к этому делу прогресс бар. Вот...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru