Проседание при первом запуске приложения
Есть приложение спортивный дневник. При первом его запуске какие-то микро-фризы еле заметные, но есть. Сначала думал что какие-то утечки. Прошелся LeakCanary, все в порядке. Я предполагаю, что это из-за создания файлов базы данных. Подскажите, есть ли смысл в splash screen активности обратиться в бд что бы создать таблицу? Чтобы один раз была долгая загрузка и потом во время выполнения ничего не подгружало. Что-то типа:
public class SplashScreen extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent intent = new Intent(this, MainActivity2.class);
SQLiteOpenHelper exe = new ExeDatabase(this);
SQLiteDatabase dbe = exe.getReadableDatabase();
SQLiteOpenHelper body = new BodyDatabase(this);
SQLiteDatabase dbb = body.getReadableDatabase();
SQLiteOpenHelper date = new DateDatabase(this);
SQLiteDatabase dbd = date.getReadableDatabase();
SQLiteOpenHelper Notif = new NotifDatabase(this);
SQLiteDatabase dbn = Notif.getReadableDatabase();
dbe.close();
dbb.close();
dbd.close();
dbn.close();
startActivity(intent);
finish();
}
Ответы (1 шт):
Я не думаю, что кто-то тут сможет дать вам однозначный ответ. Все зависит от желаемого поведения.
В целом нормальной практикой считается на сплеше что-то грузить (особенно при первом старте приложения). Если вы сделаете это на сплеше вользователю придется подождать несколько секунд, но потом у вас будет уже плавный и отзывчивый интерфейс. Это раздражает значительно меньше, чем быстрый запуск и лаги.
Но с другой стороны тут есть и такая штука как правильное распределение задач. Вот я у вас вижу цепочку создания баз данных. Вам действительно все это нужно прям сразу? Может быть имеет смысл все это раскидать по потокам и сперва вызывать те, что нужны в первую очередь, а второстепенные ресурсы создавать уже позже, после того как у вас прогрузятся и иницилизируются те компоненты которые нужны прям сразу на первой странице?
Даже если на странице нужны все компоненты, можно подумать о том, чтоб подгружать их по очереди. Когда пользователь включил приложение и видит, что через секунду появился один элемент, еще через 1-2 секунды второй, а потом через пару секунд и третий элемент это более приятно, чем просто ждать 5 секунд на пустом экране, чтоб показать сразу все.
Но все это очень сильно упирается в ваши задачи. Тут нет серебряной пули.