Обновление журнала изменений см. в файле changelog.md.
Данные предварительно загружаются до открытия Activity, а затем отображаются после завершения инициализации пользовательского интерфейса (UI). Это значительно сокращает время запуска.
Предварительную загрузку можно запустить из любого места, создав идентификатор задачи. Затем можно отслеживать предварительную загрузку данных, используя этот идентификатор, после того как UI будет инициализирован.
Оптимизация продолжается. Следите за проектом и ставьте звёзды!
dependencies {
compile 'com.billy.android:pre-loader:x.x.x'
}
int preLoaderId = PreLoader.preLoad(new Loader());
Intent intent = new Intent(this, PreLoadBeforeLaunchActivity.class);
intent.putExtra("preLoaderId", preLoaderId);
startActivity(intent);
// Пример задачи предварительной загрузки: имитация сетевого запроса для получения данных
class Loader implements DataLoader<String> {
@Override
public String loadData() {
// Этот метод выполняется в пуле потоков, нет необходимости создавать новый поток для загрузки данных
try {
Thread.sleep(600);
} catch (InterruptedException ignored) {
}
return "data from network server";
}
}
PreLoader.listenData(preLoaderId, new Listener());
// После завершения загрузки данные будут обработаны методом DataListener.onDataArrived(...)
class Listener implements DataListener<String> {
@Override
public void onDataArrived(String data) {
// Метод выполняется в основном потоке, не нужно использовать Handler для переключения потоков
Toast.makeText(activity, data, Toast.LENGTH_SHORT).show();
}
}
PreLoader.refresh(preLoaderId);
PreLoader.destroy(preLoaderId);
// Используйте GroupedDataLoader для запуска группы задач предварительной загрузки с общим идентификатором
int preLoaderId = PreLoader.preLoad(new Loader1(), new Loader2());
Intent intent = new Intent(this, PreLoadGroupBeforeLaunchActivity.class);
intent.putExtra("preLoaderId", preLoaderId);
startActivity(intent);
class Loader1 implements GroupedDataLoader<String> {
@Override
public String loadData() {
TimeWatcher timeWatcher = TimeWatcher.obtainAndStart("GroupedDataLoader1 load data");
try {
Thread.sleep(600);
} catch (InterruptedException ignored) {
}
return timeWatcher.stopAndPrint();
}
@Override
public String keyInGroup() {
return "loader1";
}
}
class Loader2 implements GroupedDataLoader<String> {
@Override
public String loadData() {
TimeWatcher timeWatcher = TimeWatcher.obtainAndStart("GroupedDataLoader2 load data");
try {
Thread.sleep(400);
} catch (InterruptedException ignored) {
}
return timeWatcher.stopAndPrint();
}
@Override
public String keyInGroup() {
return "loader2";
}
}
// Начните отслеживать данные в UI после инициализации с использованием GroupedDataListener
// GroupedDataListener и GroupedDataLoader связаны через ключ
// Можно отслеживать несколько данных одновременно
PreLoader.listenData(preLoaderId
, new DataHolder1()
, new DataHolder2()
);
// Или отслеживать по отдельности
PreLoader.listenData(preLoaderId, new
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )