Ошибка переполнения в приложении Android - PullRequest
0 голосов
/ 12 августа 2011

в моем приложении я просто бегу между двумя действиями, а именно A и B. В соответствии с пользователем он переключается с A на B, затем B на A и снова с A на B, затем B на A и продолжает.

Оба эти вида деятельности имеют вид списка.Каждый раз, когда пользователь входит и выходит, я добавляю некоторые данные, которые сохраняются в базе данных.Эти данные извлекаются из RSS-канала, иногда они используются для очень большого числа.Из-за этого я редко получаю стек из-за ошибки потока.

Сначала я разработал свои макеты с помощью Относительного макета, и я поместил свои списки в относительный макет.Здесь я получил ответ, что эта ошибка может быть связана с относительной компоновкой, и поэтому я изменил все свои компоновки на линейные, но ошибка все равно возникает.

как решить эту проблему

1 Ответ

3 голосов
/ 12 августа 2011

При запуске нового действия оно помещается поверх стека текущей задачи. Как показано на рисунке ниже,

                                                                 |->  B - StackOverflow
    | |                 | |               |A|                   |A|
    | |                 |B|               |B|                   |B|
    |A|                 |A|               |A|                   |A|
    ```                 ```               ```                   ```
Before launching   After launching    After launching       Trying to launch
 activity B         activity B         activity A            activity B

Таким образом, в конечном итоге вам не хватит места в стеке задач, что приведет к ошибке stackoverflow.

Подумайте об использовании некоторых из флагов намерений , чтобы очистить историю стека. Из ваших данных, которые вы дали, я думаю, что флаг должен быть полезен - FLAG_ACTIVITY_NO_HISTORY. Но вам нужно убедиться, что это именно то поведение, которое вам нужно, просто пройдите остальные флаги активности и выберите тот, который подходит вашему приложению.

...