2016-03-12 1 views
0

Я создал приложение в студии Android, которое отображает график (используя mp android chart) из данных, полученных от источника. Вот проблема: когда я пытаюсь построить данные на высоких частотах (например, 150 Гц плюс), приложение замедляется, а затем падает. На более низких частотах он может продолжать строить график так долго, как мне нравится, поэтому я знаю, что он не исчерпывает память. Может быть, для очистки памяти требуется минимальное время? Их все, что я могу сделать, может помочь мне очистить память, когда я захочу?Android-приложение замедляется и сбой

+0

Зачем вам 150hz? Превосходные практики Android указывают, что они нацелены на 60hz (http://developer.android.com/training/testing/performance.html). Как правило, пользователи не могут отличить эту скорость быстрее. – bcorso

+0

Потому что я создаю приложение осциллографа, которое показывает электрические сигналы. Это требует более 200 Гц в идеале. – hepzibah

+0

Просто потому, что ваши данные отбираются с частотой 200 Гц, это не значит, что вам необходимо обновить интерфейс пользователя на 200 Гц. В основном, вместо того, чтобы добавлять каждую отдельную точку в каждое обновление пользовательского интерфейса на 200 Гц, добавьте следующие 7 точек на 30 Гц (или все, что вам нужно). – bcorso

ответ

-1

Вы можете позвонить System.gc() вручную, чтобы вызвать сбор мусора, но Android все равно будет играть в GC, когда у вас заканчивается память.

Обратите внимание, что сборка мусора может с легкостью принимать 100 мс, и когда у вас есть частота обновления 150 Гц, у вас есть только 1000/150 = 6.667 мс для ваших расчетов вместе с сборкой мусора. Таким образом, ваш первый шаг, вероятно, должен состоять в том, чтобы проверить распределение объектов и попытаться свести их к минимуму. (на самом деле, в ваших методах, которые называются каждым фреймом, у вас вообще не должно быть никаких распределений объектов)