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

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

Войти
Регистрация
Восстановить пароль
 
Max64
19 / 19 / 5
Регистрация: 27.10.2012
Сообщений: 156
#1

Про Handler и ProgressBar - Программирование Android

05.06.2013, 22:14. Просмотров 881. Ответов 3
Метки нет (Все метки)

Есть 2 кнопки - Start и Stop, соответственно запуск и остановка прогресса в ProgressBar, запуск каждый раз идет с нуля.

Если нажать Start после нажатия Stop, скорость прогресса нормальная (100мс на деление)
Если многократно нажимать Start, происходит постоянное увеличение скорости прогресса, получается создаются новые потоки, каждый из которых обновляет прогресс? Как от этого избавиться?

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
package com.samples.ui.progressbar;
 
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.View;
import android.widget.ProgressBar;
import android.widget.TextView;
 
public class ProgressBarActivity extends Activity 
        implements View.OnClickListener {
    
    private ProgressBar progress;
    private TextView text;
    private boolean isRunning = false;
    
    private Handler handler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            progress.incrementProgressBy(1);
            text.setText("Progress: " + progress.getProgress() + "%");
        }
    }; 
    
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        progress = (ProgressBar)findViewById(R.id.progress);
        text = (TextView)findViewById(R.id.text);
    }
    
    @Override
    public void onClick(View v) {
        switch (v.getId()) {
        case R.id.button_start:
            onStart();
            break;
        case R.id.button_stop:
            onStop();
            break;
        }
    }
    
    public void onStart() {
        super.onStart();
        progress.setProgress(0);
        
        // Создаем новый поток
        Thread background = new Thread(new Runnable() {
           public void run() {
               while (isRunning) {
                   try {
                       Thread.sleep(100);
                   } 
                   catch (InterruptedException e) {
                       Log.e("ERROR", "Thread Interrupted");
                   }
                   handler.sendMessage(handler.obtainMessage());
               }
            }
        });
        isRunning = true;
        background.start();
    }
    
    public void onStop() {
        super.onStop();
        isRunning = false;
    }
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.06.2013, 22:14     Про Handler и ProgressBar
Посмотрите здесь:

Объясните про параметры ProgressBar - Программирование Android
добрый день. подскажите пожалуста. что такое скорость продвижения прогресс бара, что такое единицы продвижения прогресс бара и что такое...

Handler - Программирование Android
Вот допустим обьект Handler был создан в активити(то есть в главном потоке). И мы запускаем через этот Handler (его метод post) кусок кода...

Handler - Программирование Android
import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.os.Message; import...

Не работает Handler - Программирование Android
Я нахожусь на 66 уроке startandroid, здесь упоминается Handler. Почему то отсутствуют у меня методы, которые описываются тут. Вот фрагмент...

Handler timer - Программирование Android
Добрый вечер. С помощью какого метода в Handler http://developer.android.com/reference/android/os/Handler.html(беда пока с английским) ,...

Handler, поток не останавливается - Программирование Android
Добрый вечер. Не могу остановить таймер, при переходе на другую Activity. Возможно ли это вообще? Code: mport...

Handler и интервал времени - Программирование Android
Создаю хэндлер: Handler h = new Handler(); h.post(obrtimer); Runnable obrtimer = new Runnable() { public void run() { ...

Handler vs Service vs AsynkTask - Программирование Android
Есть 2 Activity, пусть A1 и A2. В методе onCreate() Activity A1 запускается новый поток, в котором определяются координаты местоположения...

Работа с Handler из другого активити - Программирование Android
Здравствуйте, пишу чат приложение и не могу понять как можно обрабатывать входящие сообщение из другого активити. У меня есть форма...

Потоки (Handler внутри synchronized) - Программирование Android
private Handler Ocnova = new Handler(); private Object sync = new Object(); class newThread extends Thread { //...String mes..... ...

Handler при пересоздании активити - Программирование Android
У меня есть поток Thread, который запускается во фрагменте и получает ссылку на изображение с сервера(парсит JSON выделяет ссылку). И...

Передача сообщения из потока. Handler - Программирование Android
Добрый день, пытаюсь передать сообщение через Handler из потока, для обновления textView, но программа вылетает при присвоении значения...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
05.06.2013, 22:36     Про Handler и ProgressBar #2
вы не умеете оператор if использовать?

нельзя вызывать методы жизненного цикла активити!
Max64
19 / 19 / 5
Регистрация: 27.10.2012
Сообщений: 156
05.06.2013, 22:45  [ТС]     Про Handler и ProgressBar #3
Без вызова методов жизненного цикла так же:

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
package com.samples.ui.progressbar;
 
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.View;
import android.widget.ProgressBar;
import android.widget.TextView;
 
public class ProgressBarActivity extends Activity implements
        View.OnClickListener {
 
    private ProgressBar progress;
    private TextView text;
    private boolean isRunning = false;
 
    private Handler handler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            progress.incrementProgressBy(1);
            text.setText("Progress: " + progress.getProgress() + "%");
        }
    };
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
 
        progress = (ProgressBar) findViewById(R.id.progress);
        text = (TextView) findViewById(R.id.text);
    }
 
    @Override
    public void onClick(View v) {
        switch (v.getId()) {
        case R.id.button_start:
            Start();
            break;
        case R.id.button_stop:
            Stop();
            break;
        }
    }
 
    public void Start() {
        progress.setProgress(0);
 
        // Создаем новый поток
        Thread background = new Thread(new Runnable() {
            public void run() {
                while (isRunning) {
                    try {
                        Thread.sleep(100);
                    } catch (InterruptedException e) {
                        Log.e("ERROR", "Thread Interrupted");
                    }
                    handler.sendMessage(handler.obtainMessage());
                }
            }
        });
        isRunning = true;
        background.start();
    }
 
    public void Stop() {
        isRunning = false;
    }
}
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
05.06.2013, 22:51     Про Handler и ProgressBar #4
это было просто замечание про методы.
Yandex
Объявления
05.06.2013, 22:51     Про Handler и ProgressBar
Ответ Создать тему
Опции темы

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