在显示java.lang.NullPointerException android.util.LruCache.put(Android版) [英] java.lang.NullPointerException in android.util.LruCache.put ( Android )

查看:307
本文介绍了在显示java.lang.NullPointerException android.util.LruCache.put(Android版)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我得到在我的谷歌崩溃和放此崩溃例外;我的应用程序的显示java.lang.NullPointerException在android.util.LruCache.put ANR的栏目

我不知道什么是错我确实需要一些帮助,请,为什么我得到这个空指针异常,以及如何解决它。

崩溃和放大器; ANR的:

 了java.lang.RuntimeException:执行doInBackground发生错误()
在android.os.AsyncTask $ 3.done(AsyncTask.java:300)
在java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355)
在java.util.concurrent.FutureTask.setException(FutureTask.java:222)
在java.util.concurrent.FutureTask.run(FutureTask.java:242)
在android.os.AsyncTask $ SerialExecutor $ 1.run(AsyncTask.java:231)
在java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
在java.util.concurrent.ThreadPoolExecutor中的$ Worker.run(ThreadPoolExecutor.java:587)
在java.lang.Thread.run(Thread.java:841)
显示java.lang.NullPointerException:引起键== NULL ||值== NULL
在android.util.LruCache.put(LruCache.java:167)

com.b3du.im.GridAdapter.addBitmapToMemoryCache(GridAdapter.java:77)
在com.b3du.im.GridAdapter $ BitmapWorkerTaskVideo.doInBackground(GridAdapter.java:218)
在com.b3du.im.GridAdapter $ BitmapWorkerTaskVideo.doInBackground(GridAdapter.java:205)
在android.os.AsyncTask $ 2.call(AsyncTask.java:288)
在java.util.concurrent.FutureTask.run(FutureTask.java:237)
... 4个

code:

 公共无效addBitmapToMemoryCache(字符串键,位图位图){
    如果(getBitmapFromMemCache(键)== NULL){
        mMemoryCache.put(键,位图);
    }
}公共位图getBitmapFromMemCache(字符串键){
    返回mMemoryCache.get(键);
}类BitmapWorkerTaskVideo扩展的AsyncTask<弦乐,太虚,位图> {
    私人最终的WeakReference< ImageView的> imageViewReference;    公共BitmapWorkerTaskVideo(ImageView的ImageView的){
        //使用的WeakReference,确保ImageView的可以被垃圾收集
        imageViewReference =新的WeakReference< ImageView的>(ImageView的);
    }    //在后台德code图像。
    @覆盖
    保护位图doInBackground(字符串... PARAMS){
        最后的位图位图=去codeSnapshotFromFileVideo(PARAMS [0],100,100);
        addBitmapToMemoryCache(将String.valueOf(PARAMS [0]),位图);
        返回位图;
    }    //完成后,看是否ImageView的仍然是围绕并设置位图。
    @覆盖
    保护无效onPostExecute(位图位图){
        如果(imageViewReference = NULL&放大器;!&安培;!=位图NULL){
            最后ImageView的ImageView的= imageViewReference.get();
            如果(ImageView的!= NULL){
                imageView.setImageBitmap(位图);
            }
        }
    }公共位图德codeSnapshotFromFileVideo(字符串文件路径,诠释reqWidth,诠释reqHeight){    //创建一个文件,使用的文件路径
    档案文件=新的文件(文件路径);
    //首先去code。与inJustDe codeBounds = true来检查尺寸
    最后BitmapFactory.Options选项=新BitmapFactory.Options();
    options.inJustDe codeBounds = TRUE;
   ThumbnailUtils.createVideoThumbnail(file.getAbsolutePath(),MediaStore.Video.Thumbnails.MICRO_KIND);
    //计算inSampleSize
    options.inSampleSize = calculateInSampleSize(选项,reqWidth,reqHeight);
    options.inJustDe codeBounds = FALSE;
    返回ThumbnailUtils.createVideoThumbnail(file.getAbsolutePath(),MediaStore.Video.Thumbnails.MICRO_KIND);}


解决方案

 公共静态位图createVideoThumbnail(字符串文件路径,诠释的那种)

创建一个视频的视频缩略图。可以返回如果视频损坏或不支持的格式。

所以,可能是位图值为null。为了避免这种写您的code是这样的:

 如果(位图!= NULL)
{
addBitmapToMemoryCache(将String.valueOf(PARAMS [0]),位图);
}

I'm getting this crash exception in my google Crashes & ANRs section for my app java.lang.NullPointerException in android.util.LruCache.put

I have no idea what's wrong I do need some help please, why I do get this null pointer exception and how to fix it.

Crashes & ANRs:

java.lang.RuntimeException: An error occured while executing doInBackground()
at android.os.AsyncTask$3.done(AsyncTask.java:300)
at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355)
at java.util.concurrent.FutureTask.setException(FutureTask.java:222)
at java.util.concurrent.FutureTask.run(FutureTask.java:242)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
at java.lang.Thread.run(Thread.java:841)
Caused by: java.lang.NullPointerException: key == null || value == null
at android.util.LruCache.put(LruCache.java:167)
at 
com.b3du.im.GridAdapter.addBitmapToMemoryCache(GridAdapter.java:77)
at com.b3du.im.GridAdapter$BitmapWorkerTaskVideo.doInBackground(GridAdapter.java:218)
at com.b3du.im.GridAdapter$BitmapWorkerTaskVideo.doInBackground(GridAdapter.java:205)
at android.os.AsyncTask$2.call(AsyncTask.java:288)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
... 4 more

Code:

public void addBitmapToMemoryCache(String key, Bitmap bitmap) {
    if (getBitmapFromMemCache(key) == null) {
        mMemoryCache.put(key, bitmap);
    }
}

public Bitmap getBitmapFromMemCache(String key) {
    return mMemoryCache.get(key);
}

class BitmapWorkerTaskVideo extends AsyncTask<String, Void, Bitmap> {
    private final WeakReference<ImageView> imageViewReference;

    public BitmapWorkerTaskVideo(ImageView imageView) {
        // Use a WeakReference to ensure the ImageView can be garbage collected
        imageViewReference = new WeakReference<ImageView>(imageView);
    }

    // Decode image in background.
    @Override
    protected Bitmap doInBackground(String... params) {
        final Bitmap bitmap = decodeSnapshotFromFileVideo(params[0], 100, 100);
        addBitmapToMemoryCache(String.valueOf(params[0]), bitmap);
        return bitmap;
    }

    // Once complete, see if ImageView is still around and set bitmap.
    @Override
    protected void onPostExecute(Bitmap bitmap) {
        if (imageViewReference != null && bitmap != null) {
            final ImageView imageView = imageViewReference.get();
            if (imageView != null) {
                imageView.setImageBitmap(bitmap);
            }
        }
    }

public Bitmap decodeSnapshotFromFileVideo (String filepath, int reqWidth, int reqHeight) {

    //Create a file, using the filepath
    File file =  new File (filepath);
    // First decode with inJustDecodeBounds=true to check dimensions
    final BitmapFactory.Options options = new BitmapFactory.Options();
    options.inJustDecodeBounds = true;
   ThumbnailUtils.createVideoThumbnail(file.getAbsolutePath(), MediaStore.Video.Thumbnails.MICRO_KIND);
    // Calculate inSampleSize
    options.inSampleSize = calculateInSampleSize(options, reqWidth, reqHeight);
    options.inJustDecodeBounds = false;
    return  ThumbnailUtils.createVideoThumbnail(file.getAbsolutePath(), MediaStore.Video.Thumbnails.MICRO_KIND);

}

解决方案

public static Bitmap createVideoThumbnail (String filePath, int kind)

Create a video thumbnail for a video. May return null if the video is corrupt or the format is not supported.

So, Might be bitmap value is null. to avoid this Write your code like this:

if(bitmap != null)
{
addBitmapToMemoryCache(String.valueOf(params[0]), bitmap);
}

这篇关于在显示java.lang.NullPointerException android.util.LruCache.put(Android版)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆