CrackMe.apk
Download file
package com.facebook.imagepipeline.memory;
import android.graphics.Bitmap;
import com.facebook.common.internal.Preconditions;
import com.facebook.common.references.ResourceReleaser;
import com.facebook.imageutils.BitmapUtil;
public class BitmapCounter {
private int mCount;
private final int mMaxCount;
private final int mMaxSize;
private long mSize;
private final ResourceReleaser<Bitmap> mUnpooledBitmapsReleaser;
public BitmapCounter(int i, int i2) {
boolean z = true;
Preconditions.checkArgument(Boolean.valueOf(i > 0));
Preconditions.checkArgument(Boolean.valueOf(i2 <= 0 ? false : z));
this.mMaxCount = i;
this.mMaxSize = i2;
this.mUnpooledBitmapsReleaser = new ResourceReleaser<Bitmap>() {
public void release(Bitmap bitmap) {
try {
BitmapCounter.this.decrease(bitmap);
} finally {
bitmap.recycle();
}
}
};
}
public synchronized boolean increase(Bitmap bitmap) {
int sizeInBytes = BitmapUtil.getSizeInBytes(bitmap);
int i = this.mCount;
if (i < this.mMaxCount) {
long j = this.mSize;
long j2 = (long) sizeInBytes;
if (j + j2 <= ((long) this.mMaxSize)) {
this.mCount = i + 1;
this.mSize = j + j2;
return true;
}
}
return false;
}
public synchronized void decrease(Bitmap bitmap) {
int sizeInBytes = BitmapUtil.getSizeInBytes(bitmap);
Preconditions.checkArgument(this.mCount > 0, "No bitmaps registered.");
long j = (long) sizeInBytes;
Preconditions.checkArgument(j <= this.mSize, "Bitmap size bigger than the total registered size: %d, %d", Integer.valueOf(sizeInBytes), Long.valueOf(this.mSize));
this.mSize -= j;
this.mCount--;
}
public synchronized int getCount() {
return this.mCount;
}
public synchronized long getSize() {
return this.mSize;
}
public synchronized int getMaxCount() {
return this.mMaxCount;
}
public synchronized int getMaxSize() {
return this.mMaxSize;
}
public ResourceReleaser<Bitmap> getReleaser() {
return this.mUnpooledBitmapsReleaser;
}
}
Download file