Я пытаюсь нарисовать растровое изображение на холсте. Но при этом я получаю указанное ниже исключение.Фатальный сигнал 11 (SIGSEGV), код 1, ошибка addr 0xc0 in tid 20706 при попытке нарисовать растровое изображение на холсте
10-10 11:29:18.592: A/libc(20706): Fatal signal 11 (SIGSEGV), code 1, fault addr 0xc0 in tid 20706 (apcanvasexample)
Ниже мой код.
public class MapView extends View implements IAsyncResponse {
private Path path;
private Paint paint;
private URL url;
private Bitmap bmp;
private Canvas canvas;
public MapView(Context context, AttributeSet attrs) {
super(context, attrs);
path = new Path();
paint = new Paint();
paint.setStyle(Paint.Style.STROKE);
paint.setColor(Color.RED);
paint.setStrokeWidth(10);
path.moveTo(0, 0);
}
@SuppressLint("DrawAllocation")
@Override
public void onDraw(Canvas canvas) {
this.canvas = canvas;
path.lineTo(currentX, currentY);
canvas.drawPath(path, paint);
new DownloadImageTask(canvas, this)
.execute("http://<ip>:<port>/map/download/image?imageType=jpg&mapId=1");
}
private class DownloadImageTask extends AsyncTask<String, Void, Bitmap> {
IAsyncResponse delegate;
Canvas canvas;
public DownloadImageTask(Canvas canvas, IAsyncResponse delegate) {
this.canvas = canvas;
this.delegate = delegate;
}
protected Bitmap doInBackground(String... urls) {
String urldisplay = urls[0];
Bitmap mIcon11 = null;
try {
InputStream in = new java.net.URL(urldisplay).openStream();
mIcon11 = BitmapFactory.decodeStream(in);
} catch (Exception e) {
Log.e("Error", e.getMessage());
e.printStackTrace();
}
return mIcon11;
}
protected void onPostExecute(Bitmap result) {
delegate.processFinished(result);
}
}
@Override
public void processFinished(Bitmap bmp) {
canvas.drawBitmap(bmp, new Rect(100,100,150,150), new Rect(0,0,50,50) , null);
}
}
Исключение прошло. Тем не менее, он не рисует битовую карту. Ничего на экране, хотя исключений нет – mayooran