【问题标题】:android - how to cache an image from a remote siteandroid - 如何缓存来自远程站点的图像
【发布时间】:2011-03-02 12:53:16
【问题描述】:

谁能提供一些关于如何将我从网站获取的图像保存到缓存中的示例。我曾尝试将以下函数包含到我的代码中,并在我运行活动后调用它。

public void getRemoteImage(String imageUrl) {
    imageUrl = "http://marga.mobile9.com/download/thumb/295/sexylady7_xo6npovn.jpg";
      URL aURL = null;
      URLConnection conn = null;
      Bitmap bmp = null;
      CacheResult cache_result = CacheManager.getCacheFile(imageUrl, new HashMap());
      if (cache_result == null) {
        try {
            aURL = new URL(imageUrl);
            conn = aURL.openConnection();
            conn.connect();
            InputStream is = conn.getInputStream();
            cache_result = new CacheManager.CacheResult();
            CacheManager.saveCacheFile(imageUrl, cache_result);
        } catch (Exception e) {
            //return null;
        }
    }
    bmp = BitmapFactory.decodeStream(cache_result.getInputStream());*/
    Toast.makeText(context,"It works", Toast.LENGTH_SHORT).show();
    //return bmp;
}

但是,我得到了一个 nullPointerException。有人可以帮我解决这个问题,因为我是 android 的新手。

我从 logcat 得到这个:

06-17 19:07:51.291: ERROR/AndroidRuntime(464): Uncaught handler: thread main exiting due to uncaught exception
06-17 19:07:51.301: ERROR/AndroidRuntime(464): java.lang.RuntimeException: Unable to start activity ComponentInfo{mobile9.android.gallery/mobile9.android.gallery.GalleryWallpapers}: java.lang.NullPointerException
06-17 19:07:51.301: ERROR/AndroidRuntime(464):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2454)
06-17 19:07:51.301: ERROR/AndroidRuntime(464):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2470)
06-17 19:07:51.301: ERROR/AndroidRuntime(464):     at android.app.ActivityThread.access$2200(ActivityThread.java:119)
06-17 19:07:51.301: ERROR/AndroidRuntime(464):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1821)
06-17 19:07:51.301: ERROR/AndroidRuntime(464):     at android.os.Handler.dispatchMessage(Handler.java:99)
06-17 19:07:51.301: ERROR/AndroidRuntime(464):     at android.os.Looper.loop(Looper.java:123)
06-17 19:07:51.301: ERROR/AndroidRuntime(464):     at android.app.ActivityThread.main(ActivityThread.java:4310)
06-17 19:07:51.301: ERROR/AndroidRuntime(464):     at java.lang.reflect.Method.invokeNative(Native Method)
06-17 19:07:51.301: ERROR/AndroidRuntime(464):     at java.lang.reflect.Method.invoke(Method.java:521)
06-17 19:07:51.301: ERROR/AndroidRuntime(464):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
06-17 19:07:51.301: ERROR/AndroidRuntime(464):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
06-17 19:07:51.301: ERROR/AndroidRuntime(464):     at dalvik.system.NativeStart.main(Native Method)
06-17 19:07:51.301: ERROR/AndroidRuntime(464): Caused by: java.lang.NullPointerException
06-17 19:07:51.301: ERROR/AndroidRuntime(464):     at android.webkit.CacheManager.getCacheFile(CacheManager.java:296)
06-17 19:07:51.301: ERROR/AndroidRuntime(464):     at mobile9.android.gallery.GalleryWallpapers.hahatest(GalleryWallpapers.java:558)
06-17 19:07:51.301: ERROR/AndroidRuntime(464):     at mobile9.android.gallery.GalleryWallpapers.onCreate(GalleryWallpapers.java:132)
06-17 19:07:51.301: ERROR/AndroidRuntime(464):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
06-17 19:07:51.301: ERROR/AndroidRuntime(464):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2417)
06-17 19:07:51.301: ERROR/AndroidRuntime(464):     ... 11 more

【问题讨论】:

  • 首先要做的是检查异常的行和提供的异常详细信息。
  • 我在顶部添加了异常详细信息。感谢您的帮助。

标签: android caching


【解决方案1】:

你使用 WebView 吗?如果你不这样做,我相信你不能使用CacheManager。有关详细信息,请参阅以下错误报告:

http://code.google.com/p/android/issues/detail?id=7222

【讨论】:

    猜你喜欢
    • 2014-12-17
    • 2012-03-13
    • 2011-02-25
    • 2019-09-26
    • 2012-09-12
    • 2011-08-11
    • 2011-01-02
    • 1970-01-01
    • 2014-04-14
    相关资源
    最近更新 更多