|
Долгий запуск приложения после рестарта устройства
|
|||
---|---|---|---|
#18+
Привет, объясните пожалуйста дураку, почему при рестарте устройства приложение определенный участок кода выполняет около минуты ? Далее (работает таймер), даже после перезапуска приложения, блок отрабатывается нормально, около секунды. Смысл такой: в директории около 14 тыс. jpg файлов (new File(COBA_PATH).listFiles()), мне нужно вытащить те, которые попадают под нужную маску, и сформировать listview. Дело именно в этом куске, 146%, ибо если его закомментировать - задержка пропадает. Сам участок кода: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23.
Заранее благодарю! ... |
|||
:
Нравится:
Не нравится:
|
|||
10.11.2014, 12:30 |
|
Долгий запуск приложения после рестарта устройства
|
|||
---|---|---|---|
#18+
1. Кэш медисервера. 2. Такие операции нужно выполнять в любом случае только в доп.потоке, между делом оповещая основной (UI) поток через Handler. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.11.2014, 12:51 |
|
Долгий запуск приложения после рестарта устройства
|
|||
---|---|---|---|
#18+
Может андроиду надо время для индексации 14 тыс файлов - а далее уже работает из кэша. Андроид и ОДИН файл размером 100Мб загружает около 5 сек и при этом приложение тоже "замирает" и дело вовсе не в отдельном потоке - а как я понял сама система тормозит и из-за этого тормозит само приложение. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.11.2014, 12:53 |
|
Долгий запуск приложения после рестарта устройства
|
|||
---|---|---|---|
#18+
Про доп. поток понятно, это пока просто наброски. В остальном - спасибо, успокоили! :) ... |
|||
:
Нравится:
Не нравится:
|
|||
10.11.2014, 12:54 |
|
Долгий запуск приложения после рестарта устройства
|
|||
---|---|---|---|
#18+
Микола Питерскийа как я понял сама система тормозит и из-за этого тормозит само приложение Не угадал. korshunДело именно в этом куске, 146%, ибо если его закомментировать - задержка пропадает. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.11.2014, 12:57 |
|
Долгий запуск приложения после рестарта устройства
|
|||
---|---|---|---|
#18+
wadmanМикола Питерскийа как я понял сама система тормозит и из-за этого тормозит само приложение Не угадал. korshunДело именно в этом куске, 146%, ибо если его закомментировать - задержка пропадает. Я и не пытался угадать - просто уже попадал в такую ситуацию. Отдельный поток не помогает. Я это странное дело увидел при работе с TTS - размер поддержки и языковый модуль его более 100мб. Так вот в момент старта TTS основной поток подвисает т.е. приложение, вызвавшее TTS не реагирует ни на одно нажатие на моем устройстве секунд 5, попытка засунуть вызов TTS в отдельный поток ничего не изменило, потом нашел данные что TTS самостоятельно запускается в отдельном потоке. В общем потратил целую неделю на выявление "бага" но так ничего и не добился. Потом начал грузить все приложения из маркета с TTS и увидел что все они имеют такую же проблему - т.е. тормоза при первом запуске приложения после старта системы или же после остановки приложения диспетчером системы. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.11.2014, 14:18 |
|
Долгий запуск приложения после рестарта устройства
|
|||
---|---|---|---|
#18+
А ведь на самом деле при первом запуске ProgressDialog "висит" мёртво :) ... |
|||
:
Нравится:
Не нравится:
|
|||
10.11.2014, 18:11 |
|
Долгий запуск приложения после рестарта устройства
|
|||
---|---|---|---|
#18+
Ан нет - доковырял свой код и не висит, крутится :) ... |
|||
:
Нравится:
Не нравится:
|
|||
10.11.2014, 18:30 |
|
Долгий запуск приложения после рестарта устройства
|
|||
---|---|---|---|
#18+
Не, висит все-таки :) ... |
|||
:
Нравится:
Не нравится:
|
|||
10.11.2014, 18:44 |
|
Долгий запуск приложения после рестарта устройства
|
|||
---|---|---|---|
#18+
korshun, а как реализовал? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.11.2014, 19:29 |
|
Долгий запуск приложения после рестарта устройства
|
|||
---|---|---|---|
#18+
Всю цепочку тогда покажу, вдруг какой-нибудь криминал увидите :) 1. В onCreate создаем таймер обратного отсчета и запускаем проверку директорий (ссылка на экземпляр класса таймера нужна для того, что бы можно было его остановить, когда активити уничтожается): Код: 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.
2. Класс проверки директорий. При успешном завершении запускается задача проверки смс'ок и формирования listview. Код: 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.
3. Класс проверки смс'ок и формирования listview. После завершения запускается таймер. Код: 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.
4. Таймер обратного отсчета, который запускает задачу из п. 3 Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21.
... |
|||
:
Нравится:
Не нравится:
|
|||
11.11.2014, 07:52 |
|
Долгий запуск приложения после рестарта устройства
|
|||
---|---|---|---|
#18+
Я код писать не буду, просто подскажу направления: 1. Сканировать файлы стоит после того, как медиасканер с этим закончил. См. MEDIA_SCANNER_FINISHED 2. Почитай про нормальные потоки и их обработчики Handler. С ними можно общаться очередями сообщений и им можно менять (понижать) приоритет. У основного потока тоже есть Handler, которому можно сообщать о каждом просканированном файле или о каждом десятом, чтоб не перегружать очередь. 3. Что вообще этот код делает, вкратце? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.11.2014, 09:14 |
|
Долгий запуск приложения после рестарта устройства
|
|||
---|---|---|---|
#18+
Я обычно факт "торможения" проверяю переворотом устройства - переворот в это время не работает. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.11.2014, 10:17 |
|
Долгий запуск приложения после рестарта устройства
|
|||
---|---|---|---|
#18+
wadman3. Что вообще этот код делает, вкратце? Как уже писАл выше, есть "база" файлов, около 14ти тыс. штук. При получении смс с определенного номера из его тела выдергивается первое слово-номер, ищется совпадение среди этой кучи файлов и формируется список (это все повторяется с периодичностью в 10 сек), при клике на пункт которого открывается соответствующая картинка. За советы благодарю, почитаю. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.11.2014, 10:32 |
|
Долгий запуск приложения после рестарта устройства
|
|||
---|---|---|---|
#18+
korshunПри получении смс Йоперный бабай смс нужно получать через BroadcastReceiver на интент android.provider.Telephony.SMS_RECEIVED ... |
|||
:
Нравится:
Не нравится:
|
|||
11.11.2014, 10:52 |
|
Долгий запуск приложения после рестарта устройства
|
|||
---|---|---|---|
#18+
wadmankorshunПри получении смс Йоперный бабай смс нужно получать через BroadcastReceiver на интент android.provider.Telephony.SMS_RECEIVED Мне именно перехватывать его не нужно :) Мне достаточно просто знать, что с конкретного номера было такое-то сообщение. Таймер тоже никуда не деть, так-как список формируется только по-факту пришедших смс за последние пол часа, более "старые" записи должны удаляться. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.11.2014, 10:59 |
|
Долгий запуск приложения после рестарта устройства
|
|||
---|---|---|---|
#18+
А насчет медиасервера можно немного теории услышать ?:) Может плохо ищу, но информации что-то не особо много, что это и с чем его едят. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.11.2014, 11:00 |
|
Долгий запуск приложения после рестарта устройства
|
|||
---|---|---|---|
#18+
korshunМне именно перехватывать его не нужно :) Мне достаточно просто знать, что с конкретного номера было такое-то сообщение. То есть твое чудо будет сканировать ВСЕ смс каждые 10 секунд? Круто... korshunА насчет медиасервера можно немного теории услышать ?:) Это такой-же приемник, что и по приходу смс. Просто в гугл зайди с этим словом: MEDIA_SCANNER_FINISHED ... |
|||
:
Нравится:
Не нравится:
|
|||
11.11.2014, 11:02 |
|
Долгий запуск приложения после рестарта устройства
|
|||
---|---|---|---|
#18+
wadmanТо есть твое чудо будет сканировать ВСЕ смс каждые 10 секунд? Ага. Что в этом криминального и как можно сделать по другому ? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.11.2014, 11:06 |
|
Долгий запуск приложения после рестарта устройства
|
|||
---|---|---|---|
#18+
korshunЧто в этом криминального и как можно сделать по другому ? 1. Это ворует заряд батарейки и это некрасиво. 2. На 4.4.х и выше сам андроид будет кричать, что твое приложение пожирает ресурсы и настойчиво предлагать его убить. Я, кстати, всегда с его доводами соглашаюсь и батарейка держится заметно дольше, нежели позволять всем приложениям работать фоном. Как по другому? 16826634 ... |
|||
:
Нравится:
Не нравится:
|
|||
11.11.2014, 11:10 |
|
Долгий запуск приложения после рестарта устройства
|
|||
---|---|---|---|
#18+
Либо ты меня не понимаешь, либо я тебя, одно из двух :) "Время жизни" смс - 30 минут. Приходит смс, я ее перехватываю, обрабатываю, добавляю ссылку на нужный файл в список. Как теперь через полчаса эту запись удалить, на каждое событие таймер вешать или что ? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.11.2014, 11:14 |
|
Долгий запуск приложения после рестарта устройства
|
|||
---|---|---|---|
#18+
korshun"Время жизни" смс - 30 минут. Приходит смс, я ее перехватываю, обрабатываю, добавляю ссылку на нужный файл в список. Как теперь через полчаса эту запись удалить, на каждое событие таймер вешать или что ? Что-то тут не так. Пусть по Вашему. Если есть список - в чем проблема повешать дату и время постановки ссылки в список? Так при том, что у Вас список, вы все равно скнируете все сообщения? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.11.2014, 11:24 |
|
Долгий запуск приложения после рестарта устройства
|
|||
---|---|---|---|
#18+
korshunЛибо ты меня не понимаешь, либо я тебя, одно из двух :) Скорее ты так пояснил ТЗ. 1. Со всей базой смс не принято работать фоном. Для этого перехватывают входящие смс и если нужно, сразу удаляют. Но удаление начиная с версии 4.4.х работать больше не будет. 2. Сканирование файлов лучше делать после того, как с ними закончил медиасканер. Затем просканировать нужную папки на предмет наличия всех файлов, внести в базу и повешать свой обработчик на изменения файловой системы (как и делает медиасканер) и при необходимости обновлять базу. 3. По приходу смс уже доставать из базы, дело секундное и для системы малозаметное. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.11.2014, 11:27 |
|
Долгий запуск приложения после рестарта устройства
|
|||
---|---|---|---|
#18+
CoderGenЕсли есть список - в чем проблема повешать дату и время постановки ссылки в список? Так при том, что у Вас список, вы все равно скнируете все сообщения? А что даст дата то сама по себе ? :) wadmankorshunЛибо ты меня не понимаешь, либо я тебя, одно из двух :) Скорее ты так пояснил ТЗ. 1. Со всей базой смс не принято работать фоном. Для этого перехватывают входящие смс и если нужно, сразу удаляют. Но удаление начиная с версии 4.4.х работать больше не будет. 2. Сканирование файлов лучше делать после того, как с ними закончил медиасканер. Затем просканировать нужную папки на предмет наличия всех файлов, внести в базу и повешать свой обработчик на изменения файловой системы (как и делает медиасканер) и при необходимости обновлять базу. 3. По приходу смс уже доставать из базы, дело секундное и для системы малозаметное. 1. Ок, понял, еще раз спасибо :) Удалять смс и не нужно. 2. Ок. 3. Понятно, но ты так не сказал ни да, ни нет на мой вопрос, как быть с удалением записи из списка через полчаса, на каждый приход смс свой таймер вешать ? :) ... |
|||
:
Нравится:
Не нравится:
|
|||
11.11.2014, 11:42 |
|
Долгий запуск приложения после рестарта устройства
|
|||
---|---|---|---|
#18+
korshun3. Понятно, но ты так не сказал ни да, ни нет на мой вопрос, как быть с удалением записи из списка через полчаса, на каждый приход смс свой таймер вешать ? :) Зачем именно через полчаса? П.С. Пусть приемник смс и удаляет принятые ранее смс. Будет не раз в полчаса, но это будет более системный подход. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.11.2014, 12:08 |
|
|
start [/forum/topic.php?fid=13&msg=38801721&tid=1331518]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
39ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
64ms |
get tp. blocked users: |
1ms |
others: | 258ms |
total: | 409ms |
0 / 0 |