Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Alex_244
0 / 0 / 10
Регистрация: 03.04.2013
Сообщений: 80
#1

Таймер. Кнопка "Пауза" - Программирование Android

17.07.2016, 17:39. Просмотров 268. Ответов 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
72
73
74
package com.example.newtimer;
 
import android.os.Handler;
import android.os.SystemClock;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
 
public class MainActivity extends AppCompatActivity {
    private Handler mHandler = new Handler();
    private long mStartTime = 0L;
    private TextView tv;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
         tv = (TextView) findViewById(R.id.textView);
        Button startbtn = (Button) findViewById(R.id.startbutton);
        assert startbtn != null;
        startbtn.setOnClickListener(new View.OnClickListener(){
 
            public void onClick(View v){
                if(mStartTime == 0L) {
                    mStartTime = SystemClock.uptimeMillis();
                    mHandler.removeCallbacks(mUpdateTimeTask);
                    mHandler.postDelayed(mUpdateTimeTask,100); 
 
                }
                else{
 
                    mHandler.post(mUpdateTimeTask);
                }
            }
        });
 
        Button stopbtn = (Button) findViewById(R.id.stopbutton);
        assert stopbtn != null;
        stopbtn.setOnClickListener(new View.OnClickListener(){
 
            public void onClick(View view){
                mHandler.removeCallbacks(mUpdateTimeTask);
            }
        });
 
    }
 
    private Runnable mUpdateTimeTask = new Runnable(){
 
        public void run() {
 
            final long start = mStartTime;
            long millis = SystemClock.uptimeMillis()- start;
 
            int seconds = (int) (millis / 1000);
            int minutes = seconds / 60;
            seconds = seconds % 60;
 
            if (seconds < 10) {
                tv.setText("" + minutes + ":0" + seconds);
            } else {
                tv.setText("" + minutes + ":" + seconds);
            }
 
            mHandler.postAtTime(this,
                    start + (((minutes * 60) + seconds + 1) * 1000));
 
        }
    };
 
 
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.07.2016, 17:39
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Таймер. Кнопка "Пауза" (Программирование Android):

Кнопка "Стереть данные", как от нее защититься?
В настройках приложения есть кнопка &quot;Стереть данные&quot;, она удаляет все данные (в...

Свой Launcher. Срабатывает кнопка "назад"
Здравствуйте! -Пишу свой простенький Laucher(во многом опирался на этот...

Кнопка "домой", смена ориентации и прочее :)
Добрый вечер уважаемые. не могу решить вот такую проблему: Сделал пример...

Написание программы "Таймер"
Доброе время суток! Совсем недавно начала изучение Java. Сейчас есть острая...

Кнопка "Показать на карте" и MapActivity
Всем привет, возник такой вопрос. У меня есть список магазинов в RecyclerView...

Кнопка "Back" для приложения
у меня есть несколько форм и мне необходима кнопка которая будет возвращать...

3
OlegJV
103 / 103 / 28
Регистрация: 13.03.2016
Сообщений: 474
17.07.2016, 18:25 #2
Что за велосипед? Есть же классы Timer и CountdownTimer. А по теме - в переменной запоминаешь интервал в секундах, по таймеру отнимаешь из неё единицу. При остановке таймера остаток времени в ней сохранится.
0
Alex_244
0 / 0 / 10
Регистрация: 03.04.2013
Сообщений: 80
18.07.2016, 13:03  [ТС] #3
OlegJV, В том и проблема, я не понимаю где и как это сделать
0
OlegJV
103 / 103 / 28
Регистрация: 13.03.2016
Сообщений: 474
18.07.2016, 13:11 #4
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
private void startTimer(long interval) {
 
    if (timer != null) {
        timer.cancel();
    }
    timer = new CountDownTimer(interval, 1000) {
    @Override
    public void onTick(long millisUntilFinished) {
        h.sendEmptyMessage(1);
    }
 
    @Override
    public void onFinish() {
        h.sendEmptyMessage(2);
    }
}.start();
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.07.2016, 13:11
Привет! Вот еще темы с решениями:

Не работает кнопка "Home"
Здравствуйте. Аппаратные кнопки можно обрабатывать через KeyEvent например так ...

Системная кнопка "Назад"
как научить программу реагировать на нажатие этой самой кнопки?

Работа с БД, связывание таблиц "фильмы", "жанры", "режиссеры"
Ребят, всем привет! накидайте какие-нить идеи по реализации ситуация такая...

Ошибка "Unknown method "e" of "org.apache.commons.logging.Log"
Unknown method 'e' of 'org.apache.commons.logging.Log' package...


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

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

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