android - 如何从远程站点缓存图像

时间:2010-06-11 06:59:36

标签: android caching

任何人都可以请我提供一些示例,说明如何保存从网站获取的图像到缓存中。我试着在我的代码中包含以下函数,并在运行活动后调用它。

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

1 个答案:

答案 0 :(得分:1)

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

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