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

Handler, поток не останавливается - Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Android ProgressBar в виде фигуры человечка http://www.cyberforum.ru/android-dev/thread957215.html
Здравствуйте. Подскажите как реализовать такой progressbar. Спасибо.
Android Живые видео обои Здравствуйте, посоветуйте как сделать выбор видео в видео обоях. Храню в preference название видео, но при изменении видео, старое видео зависает, не могу понять в чем проблема. http://www.cyberforum.ru/android-dev/thread957126.html
ListView и SQLite Android
Пишу первую простенькую игру.Пожалуйста подскажите как решить такую задачу: 1.Есть listview, в котором через simpleCursorAdapter выводится данные из бд. 2.У listview есть контекстное меню, в котором есть пункт 'продать', при нажатии которого нужно удалить этот элемент из списка. 3.Как организовать удаление?
OpengGL ES 2.0 Android
Посоветуйте где можно прочитать проOpengGL ES 2.0. Уроки, статью книги, вобще с чего начать. Желательно на java.
Android Работа с AsyncTask http://www.cyberforum.ru/android-dev/thread956854.html
Попробовал использовать AsyncTask и возник вопрос. У меня есть несколько ф-й, которые парсят текстовые файлы и заполняют таблицы БД. Сейчас они выполняются в одном потоке (последовательность выполнения не важна): LoadData1(); LoadData2(); LoadData3(); LoadData4(); LoadData5(); Но как теперь разместить эти ф-ции в отдельном потоке? В голову приходит только два варианта. Или создавать...
Android Ошибка создания activity в мастере Всем привет. Вторые сутки бьюсь над проблемой: при создании нового проекта в eclipse вываливается ошибка "Unsupported template dependency. Upgade your Android Eclipse plugin" (если стоит галка Create Activity). Пишет, мол, требуется версия платформы 8, установлена 18. Без activity - все ОК. Пакет разработчика скачан с андроида, плагин установлен (последний), путь к sdk прописаны, естественно 8 и... подробнее

Показать сообщение отдельно
sensetiw
0 / 0 / 0
Регистрация: 09.09.2013
Сообщений: 4

Handler, поток не останавливается - Android

18.09.2013, 18:48. Просмотров 1047. Ответов 5
Метки (Все метки)

Добрый вечер.
Не могу остановить таймер, при переходе на другую Activity. Возможно ли это вообще?


Code:
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
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
mport android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.SystemClock;
import android.util.Log;
import android.view.View;
import android.widget.TextView;
 
public class ActivityTwo extends Activity {
 
    //timer
    public int count = 0;
    
    
    TextView textView1;
    
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_two);
        
 
        textView1 = (TextView)findViewById(R.id.textView1);
      }
        
    
     @Override
        protected void onResume() {
            super.onResume();
            mHandler.post(mRunnable);
            Log.d(TAG, "MainActivity: onResume()");
        }
 
        @Override
        protected void onPause() {
            super.onPause();
            mHandler.removeCallbacks(mRunnable);
            Log.d(TAG, "MainActivity: onPause()");
        }
    
        @Override
        protected void onStop() {
          super.onStop();
          Log.d(TAG, "MainActivity: onStop()");
          
          
        }
    public void onClickJ (View v){
        Intent intent = new Intent(this, ActivityJ.class);
          startActivity(intent);
     
    }
    public void onClickSh (View v){
        Intent intent = new Intent(this, ActivitySh.class);
          startActivity(intent);
     
    }
    
    
    
          private static final String TAG = "MyActivity";
          private static final long TICK = 5000;
            private Handler mHandler = new Handler();
            private Runnable mRunnable = new Runnable() {
                
                
                @Override
                public void run() {
                    long start = SystemClock.uptimeMillis();
                    switch (pro) {
                    case 0: 
                        
                        count ++;
                        Log.d(TAG, "count = " + count);
                        mHandler.postAtTime(this, start + TICK);         
                        
                        break;
                        
                    case 1:
                        
                         mCount = count + 2;
                         Log.d(TAG, "count = " + count);
                         mHandler.postAtTime(this, start + TICK);
                        
                        break;
                        
                        
                    case 2: 
                        
                         mCount = count + 5;
                         Log.d(TAG, "count = " + count);
                         mHandler.postAtTime(this, start + TICK);
                        
                        break;
                        
                        
                        
                    case 3: 
                        
                         mCount = count + 50;
                         Log.d(TAG, "count = " + count);
                         mHandler.postAtTime(this, start + TICK);                        
                        
                        break;
                   
                    }
                      
                    
                }
            };
            // сохранение  count
            protected void onSaveInstanceState(Bundle outState) {
                super.onSaveInstanceState(outState);
                outState.putInt("count", count);
              }
            // восстановление count
            protected void onRestoreInstanceState(Bundle savedInstanceState) {
                super.onRestoreInstanceState(savedInstanceState);
                сount = savedInstanceState.getInt("count");
              }
 
 
 
 
    
}
LogCat
09-18 14:41:38.601: D/MyActivity(380): MainActivity: onResume()
09-18 14:41:38.611: D/MyActivity(380): сount = 1
09-18 14:41:43.656: D/MyActivity(380): сount = 2
09-18 14:41:48.714: D/MyActivity(380): сount = 3

Тут onClick на другую активность, и происходит следующее:

09-18 14:41:52.661: D/MyActivity(380): MainActivity: onPause()
09-18 14:41:52.721: D/MyActivity(380): MainActivity: onResume()
09-18 14:41:52.731: D/MyActivity(380): сount = 1
09-18 14:41:53.071: D/MyActivity(380): MainActivity: onStop()
09-18 14:41:57.776: D/MyActivity(380): сount = 2
09-18 14:41:59.911: D/MyActivity(380): MainActivity: onPause()
Во первых он продолжает работать, во вторых еще и заново начинает отсчет.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 08:22. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru