图像需要存储在哪里和Android应用程序?

时间:2016-09-07 10:38:19

标签: android android-glide

我已经在这个主题上阅读了很多,但仍然不太清楚。目前我正在创建一个应用程序,在一个屏幕上加载图像和文本。为了加载图像,我选择了Glide,但是最适合阅读的地方在哪里?我通过的所有教程都传递了图片的URL。从网上装载时它不是很慢吗?非常感谢!

3 个答案:

答案 0 :(得分:2)

如果您关心$ mix run --no-halt 16:08:17.771 [info] Starting the SubscriptionManager. 16:08:17.776 [info] SubscriptionManagerServer init(). State: {{2016, 9, 7}, {10, 38, 17}} interval: 1000 16:08:18.780 [info] SubscriptionManager handle_info(). new_state: {{2016, 9, 7}, {10, 38, 18}} 16:08:19.780 [info] SubscriptionManager handle_info(). new_state: {{2016, 9, 7}, {10, 38, 19}} 16:08:20.784 [info] SubscriptionManager handle_info(). new_state: {{2016, 9, 7}, {10, 38, 20}} 16:08:21.784 [info] SubscriptionManager handle_info(). new_state: {{2016, 9, 7}, {10, 38, 21}} 16:08:22.782 [info] SubscriptionManager handle_info(). new_state: {{2016, 9, 7}, {10, 38, 22}} ^C ,请不要放置这些图片apk size。相反,您可以将这些图片保留在static(您的免费服务器)上,并使用serverGlide等库轻松加载这些图片。

  

从网上装载时它不是很慢吗?

没有。它将下载图像一次,然后将其缓存以备将来使用。所以它非常快。

如果您认为Picasso对您不重要,并且用户不应因互联网不可用而面临问题,那么您可以将这些图片保持在应用程序内部静态。

答案 1 :(得分:1)

如果您想构建一个使用动态图片的应用程序,或者您希望在不更新应用程序的情况下更新图像,那么从服务器获取它们会更好。在我的观点中,毕加索易于使用且简单明了。还使用它自己的框架缓存。但是如果您认为您的图像不会改变,请将它们放在资产文件夹中,以便它们位于应用程序的内部存储器中。从服务器获取它们的缺点是你需要使用占位符图像,因为它们不会立即被检索。

答案 2 :(得分:1)

如果您希望图像始终来自网络,则必须使用缓存机制。我遵循的系统是这样的:(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);
                            }
                        });
                    }
                });