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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 49, средняя оценка - 4.98
bers25
1 / 1 / 0
Регистрация: 04.04.2012
Сообщений: 18
#1

Timer и TimerTask - Android

16.07.2012, 16:35. Просмотров 6082. Ответов 5
Метки нет (Все метки)

Пишу программу для андроида в eclipse. Столкнулся с такой проблемой: нужно чтобы после нажатия на картинку она через секунду сменилась на другую. Вот код:

Java
1
2
3
4
5
6
7
8
9
10
11
12
public class MyTask extends TimerTask {
        public void run() {
           ImageView butMenu =(ImageView)findViewById(R.id.imageView3);
            butMenu.setImageResource(R.drawable.menu1);         
        }
    }
    
    public void menuClick(View v) throws Throwable  {
            Timer     timer = new Timer();
        TimerTask task = new MyTask();
        timer.schedule( task, 1000);
        }
Нажимаю на кнопку, проходит секунда, и программа закрывается и выбивает ошибка: "Unfortunately app has stopped". Помогите решить проблему, пожалуйста.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.07.2012, 16:35     Timer и TimerTask
Посмотрите здесь:

Android timer или postdelayed
Android Использование Timer в андроид приложениях
Android Timer в ListView
Handler timer Android
Android Timer для чайника
Android Timer и AppWidgetProvider
Запись видео TimerTask() Android
Обращение к UI из Timer Android
Timer Android
Что будет если не завершена задача в Timer Android
Timer \ Intent Android
Android CheckBox и Timer

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
kvaka
29 / 29 / 3
Регистрация: 26.06.2012
Сообщений: 163
16.07.2012, 17:27     Timer и TimerTask #2
На сколько я знаю, из таймера нельзя менять интерфейс. Реши вопрос с помощью Handler. Только вчера тему по похожему поводу создавал
Таймер и изменение элементов интерфейса
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
16.07.2012, 17:30     Timer и TimerTask #3
логи не забывайте выкладывать.
bers25
1 / 1 / 0
Регистрация: 04.04.2012
Сообщений: 18
16.07.2012, 18:00  [ТС]     Timer и TimerTask #4
07-16 14:58:46.268: D/dalvikvm(615): GC_FOR_ALLOC freed 70K, 4% free 6056K/6275K, paused 52ms, total 57ms
07-16 14:58:46.278: I/dalvikvm-heap(615): Grow heap (frag case) to 6.546MB for 614416-byte allocation
07-16 14:58:46.368: D/dalvikvm(615): GC_CONCURRENT freed 1K, 4% free 6655K/6919K, paused 30ms+15ms, total 89ms
07-16 14:58:46.798: I/Choreographer(615): Skipped 131 frames! The application may be doing too much work on its main thread.
07-16 14:58:46.968: D/gralloc_goldfish(615): Emulator without GPU emulation detected.
07-16 14:58:51.501: W/dalvikvm(615): threadid=11: thread exiting with uncaught exception (group=0x40a13300)
07-16 14:58:51.528: E/AndroidRuntime(615): FATAL EXCEPTION: Timer-0
07-16 14:58:51.528: E/AndroidRuntime(615): android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.
07-16 14:58:51.528: E/AndroidRuntime(615): at android.view.ViewRootImpl.checkThread(ViewRootImpl.java:4607)
07-16 14:58:51.528: E/AndroidRuntime(615): at android.view.ViewRootImpl.invalidateChildInParent(ViewRootImpl.java:867)
07-16 14:58:51.528: E/AndroidRuntime(615): at android.view.ViewGroup.invalidateChild(ViewGroup.java:4066)
07-16 14:58:51.528: E/AndroidRuntime(615): at android.view.View.invalidate(View.java:10250)
07-16 14:58:51.528: E/AndroidRuntime(615): at android.view.View.setFlags(View.java:8366)
07-16 14:58:51.528: E/AndroidRuntime(615): at android.view.View.setVisibility(View.java:5512)
07-16 14:58:51.528: E/AndroidRuntime(615): at android.widget.ImageView.setVisibility(ImageView.java:1155)
07-16 14:58:51.528: E/AndroidRuntime(615): at com.example.angry.octopus.MainActivity$MyTask.run(MainActivity.java:48)
07-16 14:58:51.528: E/AndroidRuntime(615): at java.util.Timer$TimerImpl.run(Timer.java:284)
07-16 14:58:53.238: I/Choreographer(615): Skipped 44 frames! The application may be doing too much work on its main thread.
07-16 14:58:53.918: I/Process(615): Sending signal. PID: 615 SIG: 9
07-16 15:02:15.008: E/Trace(667): error opening trace file: No such file or directory (2)
07-16 15:02:15.218: D/dalvikvm(667): GC_FOR_ALLOC freed 74K, 4% free 6056K/6275K, paused 43ms, total 45ms
07-16 15:02:15.228: I/dalvikvm-heap(667): Grow heap (frag case) to 6.546MB for 614416-byte allocation
07-16 15:02:15.368: D/dalvikvm(667): GC_CONCURRENT freed 1K, 4% free 6655K/6919K, paused 75ms+15ms, total 138ms
07-16 15:02:15.838: I/Choreographer(667): Skipped 169 frames! The application may be doing too much work on its main thread.
07-16 15:02:15.947: D/gralloc_goldfish(667): Emulator without GPU emulation detected.
07-16 15:02:18.538: W/dalvikvm(667): threadid=11: thread exiting with uncaught exception (group=0x40a13300)
07-16 15:02:18.547: E/AndroidRuntime(667): FATAL EXCEPTION: Timer-0
07-16 15:02:18.547: E/AndroidRuntime(667): android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.
07-16 15:02:18.547: E/AndroidRuntime(667): at android.view.ViewRootImpl.checkThread(ViewRootImpl.java:4607)
07-16 15:02:18.547: E/AndroidRuntime(667): at android.view.ViewRootImpl.requestLayout(ViewRootImpl.java:835)
07-16 15:02:18.547: E/AndroidRuntime(667): at android.view.View.requestLayout(View.java:15129)
07-16 15:02:18.547: E/AndroidRuntime(667): at android.view.View.requestLayout(View.java:15129)
07-16 15:02:18.547: E/AndroidRuntime(667): at android.view.View.requestLayout(View.java:15129)
07-16 15:02:18.547: E/AndroidRuntime(667): at android.view.View.requestLayout(View.java:15129)
07-16 15:02:18.547: E/AndroidRuntime(667): at android.widget.RelativeLayout.requestLayout(RelativeLayout.java:292)
07-16 15:02:18.547: E/AndroidRuntime(667): at android.view.View.requestLayout(View.java:15129)
07-16 15:02:18.547: E/AndroidRuntime(667): at android.widget.ImageView.setImageResource(ImageView.java:355)
07-16 15:02:18.547: E/AndroidRuntime(667): at com.example.angry.octopus.MainActivity$MyTask.run(MainActivity.java:46)
07-16 15:02:18.547: E/AndroidRuntime(667): at java.util.Timer$TimerImpl.run(Timer.java:284)
07-16 15:02:20.397: I/Choreographer(667): Skipped 129 frames! The application may be doing too much work on its main thread.
07-16 15:02:21.458: I/Process(667): Sending signal. PID: 667 SIG: 9
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
16.07.2012, 19:20     Timer и TimerTask #5
Only the original thread that created a view hierarchy can touch its views.
Только с UI-ного потока можно менять UI.
YAUHEN
146 / 128 / 6
Регистрация: 29.07.2008
Сообщений: 506
17.07.2012, 11:34     Timer и TimerTask #6
Вариантов уйма:
View.postDelayed
Handler
Activity.runOnUiThread
HandlerThread + Handler
Yandex
Объявления
17.07.2012, 11:34     Timer и TimerTask
Ответ Создать тему
Опции темы

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