2011-06-20 37 views
5

Tôi có một TextView mà tôi đăng ký hoạt hình sau:Animating TextView với phông chữ tùy chỉnh làm công việc nặng nhọc để phông chữ Cache

mScaleAnimation = new ScaleAnimation(1f, 1.2f, 1f, 1.2f, 
      mReferenceTextView.getWidth()/2, mReferenceTextView 
        .getHeight()/2); 
    mScaleAnimation.setRepeatCount(Animation.INFINITE); 
    mScaleAnimation.setRepeatMode(Animation.REVERSE); 
    mScaleAnimation.setDuration(500); 

Nó hoạt động tốt và trông thật sự mát mẻ :)

mối quan tâm duy nhất của tôi là sau đây: Khi tôi nhìn vào logcat, nó là hoàn toàn không sử dụng được kể từ khi hoạt hình ist chạy, tôi tiếp tục nhận được các bản ghi này hơn và hơn nhiều lần một giây: (

06-20 17:50:05.555: DEBUG/skia(14179): purging 213K from font cache [7 entries] 
06-20 17:50:05.750: DEBUG/skia(14179): purging 196K from font cache [7 entries] 
06-20 17:50:05.870: DEBUG/skia(14179): purging 202K from font cache [8 entries] 
06-20 17:50:05.995: DEBUG/skia(14179): purging 190K from font cache [8 entries] 

TextView sử dụng phông chữ/kiểu chữ tùy chỉnh (có định dạng otf).

Bất kỳ ý tưởng nào gây ra công việc nặng nhọc cho bộ nhớ cache phông chữ?

Trả lời

1

Tôi tin rằng bộ nhớ cache của bạn bị tiêu diệt vì bạn đang tạo ra tấn đối tượng TypeFace. Tôi đoán rằng đây là bản phát hành trước ICS? Có một bug giữ TypeFaces và không giải phóng nó một cách chính xác. Vì vậy, khi hoạt ảnh của bạn, nó tiếp tục tạo ra các đối tượng mới cho từng vị trí và chúng bị rò rỉ và không bao giờ được làm sạch.

Tôi đã tìm thấy đề xuất của ai đó để tạo bộ nhớ cache TypeFace bằng HashMap. Bạn có thể kiểm tra bài đăng này để biết thêm chi tiết. Custom fonts and XML layouts (Android)

+0

Tôi chỉ đang tạo đối tượng TypeFace một lần trong lớp Hoạt động, không phải khi tạo hoạt ảnh hoặc thứ gì đó tương tự. – Goddchen

+0

Có. Tôi hiểu rằng bạn chỉ đang tạo nó một lần. Nhưng hệ thống đang tạo ra nhiều hơn. Và lỗi mà tôi liên kết đến không giải phóng chúng đúng cách. –

0

Nếu bạn liên tục thay đổi kích thước phông chữ thực tế, Cả Skia và HWUI sẽ liên tục tái rasterising và recaching glyphs mới có kích thước phù hợp. Việc sử dụng bộ nhớ có thể phát triển rất nhanh và hiệu suất sẽ tăng lên. Bạn không nên gặp vấn đề này nếu bạn chỉ cần mở rộng canvas, nhưng sau đó bạn sẽ không nhận được chất lượng.

Các vấn đề liên quan