का कारण नहीं है I एंड्रॉइड एसडीके के साथ एक काफी मानक ऐप कार्यान्वित कर रहा है जिसमें SurfaceView, SurfaceHolder, Callback सेटअप का उपयोग करके ड्राइंग शामिल है।एंड्रॉइड SurfaceHolder.unlockCanvasAndPost() redraw
मेरे मुख्य धागे (यूआई थ्रेड) में मेरे पास SurfaceHolder (या कैनवास जिसे आप पुनर्प्राप्त करते हैं) का कोई चित्र या हैंडलिंग नहीं है।
एक अलग थ्रेड में मैं निम्नलिखित है:
Log.i("GAME.DrawThread", "run()");
Log.i("GAME.DrawThread", Thread.currentThread().getName());
Canvas canvas = null;
try {
canvas = holder.lockCanvas();
synchronized(holder) {
Log.i("GAME", "draw():synchronized");
Paint paint = new Paint();
paint.setColor(R.color.draw_color);
canvas.drawColor(R.color.draw_color);
canvas.drawLine(0, 0, 500, 500, paint);
}
} catch (SurfaceHolder.BadSurfaceTypeException e) {
Log.e("GAME", "onDraw(): BadSurfaceTypeException");
} finally {
if (canvas != null) {
holder.unlockCanvasAndPost(canvas);
}
}
इस कोड को निष्पादित किया जा रहा है, कोई अपवाद नहीं फेंकता है, और कोई नकारात्मक पक्ष प्रभाव है कि मैं पा सकते हैं नहीं है; हालांकि, अनलॉक कैनवास एंडपोस्ट() कॉल कभी भी ड्रा() को कॉल करने का कारण नहीं बनता है।
दूसरे शब्दों में, unlockCanvasAndPost() SurfaceView का एक रेड्रो नहीं बनाता है।
कोई विचार जो इस लक्षण का कारण बन सकता है? मेरे पास बहुत सारे जावा अनुभव हैं, एंड्रॉइड अनुभव की एक उचित मात्रा है, और बहुत सारे डिबगिंग अनुभव हैं और इसे ट्रैक नहीं कर सकते हैं।
अग्रिम धन्यवाद।
यह कोड अब एंड्रॉइड 4.3 –