Выделение памяти - зависание / зависание пользовательского интерфейса - во время сетевого вызова (Rx2AndroidNetworking) и вставка записей в SQLite (ActiveAndroid) - PullRequest
2 голосов
/ 04 ноября 2019

Я использую Rx2AndroidNetworking в своем проекте, чтобы получить getObjectListObservable тысячи записей из Списка объектов JSON Сервера около 150+ атрибутов базы данных SQLite из 3 таблиц, которые мне нужно повторно синхронизировать (вставить) данные в таблицы SQLiteиспользование ActiveAndroid ORM.

При выполнении метода Rx2AndroidNetworking.get в журнале регистрации отображаются следующие журналы.

D/LoginActivity: onCompleted: only_login
D/LoginActivity: onComplete: before_executing_the_resyncing_code
D/LoginActivity: InsertData: before_Rx2AndroidNetworking_GetPatients
I/art: Do partial code cache collection, code=57KB, data=58KB
I/art: After code cache collection, code=56KB, data=57KB
I/art: Increasing code cache capacity to 256KB
I/art: Background sticky concurrent mark sweep GC freed 12747(2MB) AllocSpace objects, 0(0B) LOS objects, 11% free, 17MB/19MB, paused 12.598ms total 37.164ms

При выполнении метода public void onNext в журнале регистрации отображаются следующие журналы.

D/LoginActivity: onNext: resyncing_insert_data_in db
I/art: Do full code cache collection, code=125KB, data=101KB
I/art: Starting a blocking GC JitCodeCache
I/art: After code cache collection, code=69KB, data=44KB
I/art: Do partial code cache collection, code=81KB, data=80KB
I/art: After code cache collection, code=80KB, data=80KB
I/art: Increasing code cache capacity to 512KB
I/art: Compiler allocated 6MB to compile void .onNext(java.util.List)
I/art: Compiler allocated 8MB to compile void .onNext(java.util.List)

Во время выполнения сетевого вызова и вставки данных в SQLite пользовательский интерфейс моего приложения зависает. Мое приложение хочет получить память из операционной системы, но устройство (Lenovo TB-X704L с 3 ГБ ОЗУ) не может выделить для моего приложения более 64 МБ памяти (скриншот прилагается).

enter image description here

Диагностируйте проблему и предложите решение.

1 Ответ

0 голосов
/ 05 ноября 2019

На каком потоке вы выполняете sql операцию? Попробуйте перенести операцию sql на отдельный рабочий поток.

...