Черный экран и тоже ждать один экран к другому?
У меня есть представление списка в родительской активности, и я передаю некоторый параметр из родительского экрана в дочернюю активность. Также у меня есть настраиваемая тема и строка заголовка. Мой вопрос: когда я перехожу из родительского списка в дочерний экран, это занимает слишком много времени и черный экран приходит на некоторое время. В чем причина и как я могу избежать этого?
Я искал в Google немного, а также я увидел одну причину, но она не работает для меня.
Кто-нибудь может мне помочь?
2 ответа
Когда вы переходите к следующему экрану, пожалуйста, поместите вашу задачу обработки в поток (в OnCreate()) и покажите диалог прогресса для ожидания.
Изменить - попробуйте эту тему в действии и дайте мне знать, что случилось.
@android:style/Theme.Translucent.NoTitleBar
Из описания у вас есть проблема с обработкой, а не проблема отображения. Вы должны определить процедуру, которая занимает слишком много времени для завершения. Не видя код обработки, трудно рекомендовать решение.
Вот несколько вещей, которые могут помочь: Вы запускаете приложение на реальном устройстве или используете эмулятор? - Эмулятор общеизвестно медленный. Попробуйте запустить его на реальном устройстве.
Получаете ли вы доступ к онлайн-ресурсу, такому как веб-сайт или веб-служба, в потоке пользовательского интерфейса? Все онлайновые обращения должны выполняться в отдельном потоке.
Где ваша обработка делается? Не выполняйте избыточную обработку в onClick объекта ListView, поскольку он будет выполняться в потоке пользовательского интерфейса. Поместите только минимальную обработку в метод onCreate в новом Activity, потому что она также выполняется в потоке пользовательского интерфейса. Лучшее место для размещения длительной обработки - метод onResume нового Activity (он все еще выполняется в потоке пользовательского интерфейса) и в идеале передает обработку другому потоку.
Вы обращаетесь к локальной базе данных SQLite? Если это так, ваши операторы SQL и / или база данных могут быть не оптимизированы для производительности. Если вы используете локальную базу данных и не являетесь сильным программистом SQL, попросите кого-нибудь взглянуть на ваши утверждения или опубликовать их здесь.
Использует ли ваше приложение большой объем памяти, такой как большие массивы или изображения, загруженные в память? Если это так, уменьшите требования к памяти - храните в памяти только то, что вы должны иметь в любой момент.
Если ничего из этого не помогло, пожалуйста, опубликуйте подробное описание обработки, которую вы выполняете между onClick ListView и до точки, где вы готовы для другого пользовательского ввода.