계속이 문제가 발생하며 이에 대해 어떻게해야할지 모르겠습니다.캔버스 : 재활용 비트 맵을 사용하려고합니다. android
저는 this 라이브러리를 사용했습니다. 자른 이미지를 얻을 때 정적 변수에 저장하고 다음 활동으로 이동합니다. 다음 액티비티에 도착하면 정적 변수를 참조하여 비트 맵을 가져오고 크기를 조정합니다. 그러나 그것은 나에게 오류를 준다.
내가하고있는 일이 여기에있다.
public void buttonCropClick(View view) throws IOException
{
imageView.setDrawingCacheEnabled(true);
imageView.buildDrawingCache(true);
Snapshot.CroppedBitmap = imageView.getDrawingCache(true);
imageView.setDrawingCacheEnabled(false);
startActivity(new Intent(this,RecommendationInfo.class));
}
는 RecommendationInfo
클래스, I는 난 다음 활동에 참조하고 다음의 함수로 전달 정적 변수에서이 비트 맵을 저장 한 다음 행 Snapshot.CroppedBitmap = imageView.getDrawingCache(true);
비트 맵을 얻는다.
public static Bitmap scaleDown(Bitmap realImage,boolean filter) {
float maxImageSize = HeightToSet;
float ratio = Math.min(
(float) maxImageSize/realImage.getWidth(),
(float) maxImageSize/realImage.getHeight());
int width = Math.round((float) ratio * realImage.getWidth());
int height = Math.round((float) ratio * realImage.getHeight());
// Error here
Bitmap newBitmap = Bitmap.createScaledBitmap(realImage, width,height, filter);
return newBitmap;
}
는 이미
bitmap.recycle()
를 호출했습니다. 왜 내가이 문제를 해결하기 위해 무엇을 할 수 있습니까? 여기에 내 logcat입니다.
07-14 03:09:43.713: E/AndroidRuntime(19653): FATAL EXCEPTION: main
07-14 03:09:43.713: E/AndroidRuntime(19653): java.lang.RuntimeException: Canvas: trying to use a recycled bitmap [email protected]
07-14 03:09:43.713: E/AndroidRuntime(19653): at android.graphics.Canvas.throwIfRecycled(Canvas.java:955)
07-14 03:09:43.713: E/AndroidRuntime(19653): at android.graphics.Canvas.drawBitmap(Canvas.java:1012)
07-14 03:09:43.713: E/AndroidRuntime(19653): at android.graphics.Bitmap.createBitmap(Bitmap.java:462)
07-14 03:09:43.713: E/AndroidRuntime(19653): at android.graphics.Bitmap.createScaledBitmap(Bitmap.java:349)
07-14 03:09:43.713: E/AndroidRuntime(19653): at com.example.Libraries.Snapshot.scaleDown(Snapshot.java:42)
07-14 03:09:43.713: E/AndroidRuntime(19653): at com.example.androidtestproject.RecommendationInfo.SetRecommendationValues(RecommendationInfo.java:195)
07-14 03:09:43.713: E/AndroidRuntime(19653): at com.example.androidtestproject.RecommendationInfo.access$5(RecommendationInfo.java:183)
07-14 03:09:43.713: E/AndroidRuntime(19653): at com.example.androidtestproject.RecommendationInfo$1.onClick(RecommendationInfo.java:154)
07-14 03:09:43.713: E/AndroidRuntime(19653): at android.view.View.performClick(View.java:2552)
07-14 03:09:43.713: E/AndroidRuntime(19653): at android.view.View$PerformClick.run(View.java:9229)
07-14 03:09:43.713: E/AndroidRuntime(19653): at android.os.Handler.handleCallback(Handler.java:587)
07-14 03:09:43.713: E/AndroidRuntime(19653): at android.os.Handler.dispatchMessage(Handler.java:92)
07-14 03:09:43.713: E/AndroidRuntime(19653): at android.os.Looper.loop(Looper.java:138)
07-14 03:09:43.713: E/AndroidRuntime(19653): at android.app.ActivityThread.main(ActivityThread.java:3701)
07-14 03:09:43.713: E/AndroidRuntime(19653): at java.lang.reflect.Method.invokeNative(Native Method)
07-14 03:09:43.713: E/AndroidRuntime(19653): at java.lang.reflect.Method.invoke(Method.java:507)
07-14 03:09:43.713: E/AndroidRuntime(19653): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:878)
07-14 03:09:43.713: E/AndroidRuntime(19653): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:636)
07-14 03:09:43.713: E/AndroidRuntime(19653): at dalvik.system.NativeStart.main(Native Method)
07-14 03:09:45.515: E/TAG(20039): End of input at character 0 of
어떤 오류가 있습니까? – Alamri
질문을 업데이트했습니다. – Mj1992
비트 맵이 어딘가에 재활용되어 있는지 확인하십시오. 재활용 한 후에 비트 맵을 호출 할 수 없습니다. 다른 활동을 시작하기 전에 비트 맵을 재활용했는지 여부를 확인하십시오. – k0sh