Я читал довольно много на эту тему, но до сих пор не совсем ясно. На данный момент я создаю приложение, загружая изображение и текст на один экран. Для загрузки изображений я выбрал Glide, но где это самое подходящее место для их чтения? Все обучающие материалы, которые я прошел, пропускают URL-адрес изображения. Разве это не медленнее при загрузке из сети? Большое спасибо!Где нужно хранить изображения и приложение для Android?
ответ
Если вас интересует apk size
, тогда не помещайте эти изображения static
. Вместо этого вы можете хранить эти изображения на server
(ваш или бесплатный сервер) и легко загружать эти изображения с помощью библиотек, таких как Glide
или Picasso
.
Разве это не медленнее при загрузке из сети?
Нет. Он будет загружать изображение один раз и затем кэшировать его для использования в будущем. Так что это очень быстро.
Если вы думаете, что apk size
не имеет значения для вас, и пользователь не должен сталкиваться с проблемой из-за недоступности Интернета, вы можете сохранить эти изображения статичными внутри приложения.
@ user6456773 проверить мой отредактированный ответ. – Nikhil
Большое спасибо за объяснение, indramurari! Можете ли вы дать мне пример для бесплатного сервера, где я могу хранить изображения? – user6456773
@ user645677 вы можете хранить изображения на [aws-сервере] (aws.amazon.com/webapps) или [imgur] (imgur.com/) и т. Д. Существует множество бесплатных хостинг-серверов. Вы получите его и в Google. – Nikhil
Если вы хотите создать приложение, которое использует динамические изображения, или вы хотите обновить свои изображения, не обновляя приложение, лучше получить их с сервера. И в моем опере picasso прост в использовании и прямолинейности. Также использует собственное кэширование. Но если вы думаете, что ваши изображения не изменятся, поместите их в папку с ресурсами, чтобы они находились во внутренней памяти приложения. Получение их с сервера имеет свои недостатки, как если бы вы использовали образы замещающих, потому что они не будут немедленно восстановлены.
Вы должны использовать механизмы кеширования, если вы хотите, чтобы изображения всегда были из сети. Система я следую, как это: (PS Я использую Пикассо, быстрый и надежный.):
Picasso.with(this).load(URL).networkPolicy(NetworkPolicy.OFFLINE). //load from cache first time
into(imageView, new Callback() { //Picasso Callback
@Override
public void onSuccess() {
if(isNetworkAvailable()) { // if network available then update the cache for this URL
Picasso.with(MyActivity.this).invalidate(URL);
}
progress.setVisibility(View.GONE); // Progressbar
}
@Override
public void onError() { // Image not loaded, try again one last time
Picasso.with(MyActivity.this).load(URL).into(imageView, new Callback() {
@Override
public void onSuccess() {
progress.setVisibility(View.GONE);
}
@Override
public void onError() {
progress.setVisibility(View.GONE);
}
});
}
});
Большое спасибо за фрагмент кода, а также за пояснения, перейдя в Picasso :) – user6456773
вы можете использовать фреску, Picasso, nestrol imageloader для изображений кэша –
Glide является хорошим инструментом для загрузки изображений, первый раз его будет медленно загружаться, но с следующего раза он будет загружаться быстрее, чем в предыдущий раз, он будет кэшировать изображения. Если вы хотите реализовать технологию кэширования, вы можете использовать кеш LRU – Hanuman