|
27 / 41 / 13
Регистрация: 15.05.2013
Сообщений: 1,313
|
||||||
На эмуляторе работает, а в смартфоне нет07.05.2014, 15:03. Показов 4009. Ответов 5
Метки нет (Все метки)
Подскажите, в чём ошибка?
В android sdk работает, а в смарте нет. А должен просто появится один символ на экране, и переместиться слева на право. Смартфон почему-то зависает, начинает тормозить
0
|
||||||
| 07.05.2014, 15:03 | |
|
Ответы с готовыми решениями:
5
Сравнение координат: на эмуляторе - работает, на устройстве - нет Нет приложения в эмуляторе Xamarin, приложение устанавливается на телефон, но не работает, хотя работает на эмуляторе |
|
2343 / 499 / 22
Регистрация: 01.04.2009
Сообщений: 2,200
|
|
| 07.05.2014, 15:55 | |
|
Поток создаётся в OnResume и нигде не убивается.
Грубо говоря, получив десяток OnResume, Activity создает десяток потоков, которые одновременно пытаются что-то делать. Обычно запуск потока ставят в surfaceCreated, а убийство - в surfaceDestroyed.
0
|
|
|
27 / 41 / 13
Регистрация: 15.05.2013
Сообщений: 1,313
|
||
| 07.05.2014, 20:58 [ТС] | ||
|
А тут прога сразу глючит, при первом запуске и перемещение символа не отображается
0
|
||
|
2343 / 499 / 22
Регистрация: 01.04.2009
Сообщений: 2,200
|
|
| 07.05.2014, 21:23 | |
|
Да я что-то не вижу, чтобы ты его на весь экран развернул.
А это значит, что служебная часть экрана - та, где, антивирусы и подключение к вай-фаю отображаются, еще как могут захватывать экран. Упс! Вот так вот. Загрузил в телефон приложение, антивирус его поставил на паузу, проверил и сообщил об этом... и возобновил. И пошло у тебя ДВА потока, конкурирующих за экран. Делай по-человечески.
1
|
|
|
27 / 41 / 13
Регистрация: 15.05.2013
Сообщений: 1,313
|
|||||||
| 07.05.2014, 23:18 [ТС] | |||||||
|
А пока у меня опыта нет. Кстати я добавил метод onResume и onDestroy, теперь приложение то работает, то нет. Т.е. если несколько раз позапускать прогу, то бывает показывает перемещающийся символ, а бывает глючит, и даже кнопка назад не работает!
0
|
|||||||
|
2343 / 499 / 22
Регистрация: 01.04.2009
Сообщений: 2,200
|
||||||||||||
| 08.05.2014, 08:33 | ||||||||||||
|
И вот прикинь, как оно теперь работает: Стартует Activity. Срабатывает Activity.onCreate(): создается SurfaceView() Срабатывает SurfaceView.surfaceCreated() Срабатывает Activity.OnStart() Срабатывает Activity.OnResume() - вызывает SurfaceView.resume(): создаётся второй поток Запускается процедура run() второго потока, и в половине случаев тут-же выходит, поскольку переменная running на этот момент еще НЕ ИНИЦИАЛИЗИРОВАНА и находиться в хрен-знает-каком состоянии - и цикл обработки может вообще не запуститься Затем в SurfaceView.resume() срабатывает running = true; но уже поздно - второй поток, скорее всего, уже закрылся. Если тебе повезло, и поток вошел в цикл - срабатывает любой случайный чих на экран. От активности сервисов, до случайного взмаха рукой, да мало ли от чего... У меня вот смартфон беситься начинает, если рядом с ним на зарядке старый телефон лежит. Ток в проводе зарядки воспринимается иногда как нажатия и жесты. При этом Срабатывает Activity.OnPause() - вызывает SurfaceView.pause() А там - running = false; Но поток-то никуда не делся. Снова срабатывает Activity.OnResume() - вызывает SurfaceView.resume() Создаётся третий поток, в котором тоже running в хрен-знает-каком состоянии. И вот ты пытаешься всю эту фигню закрыть и тут... Срабатывает Activity.OnDestroy() - вызывает SurfaceView.destroy() А в нем:
Прикинь просто: вот сделал ты running = false; А в этот момент твой второй поток что-то там рисовал на экране отрабатывал canv.drawRGB(0, 0, 0), например. Не может он мгновенно завершиться и до проверки условия while (running) дойти - ему дорисовать надо, да еще и твое Thread.sleep(100) в конце отработать. А тут ты ему такой бац!! thread.interrupt() И экран твоего девайса зависает нафиг, просто потому, что канва захвачена потоком, который что-то там рисовал, а ты это поток уже убил к чертовой матери. И как рисовать что-то твой андроид уже не знает - получить канву экрана он не может, и освободить ее некому. Вот такую вот фигню ты написал. А по-человечески это будет примерно так:
По-хорошему, поток надо вообще в отдельный класс вынести.
1
|
||||||||||||
| 08.05.2014, 08:33 | |
|
Помогаю со студенческими работами здесь
6
Netbeans: приложения нет в эмуляторе Нет ярлыка приложения в эмуляторе RSS-читалка - работает на эмуляторе, не работает на реальном девайсе eclipsе (в эмуляторе нет моей программы) Почему нет кнопок навигации в эмуляторе? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма).
На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
|
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes.
А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения
развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
|
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ *
Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам
Кирхгофа, решает её и находит:
токи, напряжения и их 1 и 2 производные при t = 0;. . .
|
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым.
Но восстановить их можно так.
Для этого понадобится консольная утилита. . .
|
|
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
|
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
|
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11
— это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
|
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11
Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
|