|
27 / 41 / 13
Регистрация: 15.05.2013
Сообщений: 1,313
|
||||||
На эмуляторе работает, а в смартфоне нет07.05.2014, 15:03. Показов 4105. Ответов 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е (в эмуляторе нет моей программы) Почему нет кнопок навигации в эмуляторе? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
|
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
|
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . .
а удачный момент так и не приходит.
|
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица.
Задача: зафиксировать три левых колонки в отчете.
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
/ / . . .
|
|
Настройки VS Code
Loafer 13.04.2026
{
"cmake. configureOnOpen": false,
"diffEditor. ignoreTrimWhitespace": true,
"editor. guides. bracketPairs": "active",
"extensions. ignoreRecommendations": true,
. . .
|
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2.
Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива.
Было так:. . .
|
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2.
Задача: реализовать контроль корректности заполнения дат назначения. . .
|
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html
Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
|