不要在onDraw的时候新建对象. 若需用到建议在初始化的位置赋值.
void initialize() {
...;
mArrowPath = new Path();
}
// onDraw
if (mSecondTrianglePath.isEmpty()) {
mSecondTrianglePath.reset();
...;
}
// 此时用AndroidStudio的Proifer分析的时候Native的内存基本是无变化的,不会出现丢帧的情况. 否则,内存开销会引发JVM的一些事情会阻塞UI线程的执行.
mTextPaint.getTextBounds("12", 0, "12".length(), mTextRect);
canvas.drawText("12", mCenterX, mCenterY-mOutSideRadius+mTextRect.height()/2, mTextPaint);
mTextPaint.getTextBounds("3", 0, "3".length(), mTextRect);
canvas.drawText("3", mCenterX+mOutSideRadius, mCenterY+mTextRect.height()/2, mTextPaint);
canvas.drawText("6", mCenterX, mCenterY+mOutSideRadius+mTextRect.height()/2, mTextPaint);
canvas.drawText("9", mCenterX-mOutSideRadius, mCenterY+mTextRect.height()/2, mTextPaint);
// 对象重用性质
对象的引用计数
void onDraw(Canvas) {
Paint paint = drawable.getPaint();// 此处只是增加了引用计数.
}
网友评论