2011-08-12 23 views
6

Trong codebase, chúng tôi thừa kế việc sử dụng MediaTracker luôn được thực hiện cục bộ trong mỗi khối mã.MediaTracker - cách sử dụng, lợi ích là gì, hoặc có thay đổi không?

new MediaTracker(new Canvas()); 
mediatracker.addImage(i, 1); 
try { 
    mediatracker.waitForAll(); 
} catch (InterruptedException e) { } 
mediatracker.removeImage(i); 

Quyết định này là không hiệu quả, tôi cuối cùng đã thay thế nó bằng một trường hợp tĩnh và phương pháp:

final static protected MediaTracker mediatracker = new MediaTracker(new Canvas()); 

static protected void checkImageIsReady(Image i) { 
    mediatracker.addImage(i, 1); 
    try { 
     mediatracker.waitForAll(); 
    } catch (InterruptedException e) { } 
    mediatracker.removeImage(i); 
} 

Như vậy đến nay chưa có tác động xấu.

Có một cách tiếp cận khác có thể - để đính kèm MediaTracker vào từng thành phần (thường là Khung hoặc JFrame) được ngụ ý mạnh mẽ như cách tiếp cận để thực hiện bởi constructor documentation.

Vì vậy, tôi có 2 câu hỏi:

  1. Làm thế nào và tại sao sử dụng MediaTracker?

  2. Phương án thay thế là gì?

Trả lời

8

MediaTracker hữu ích vào năm 1995. Quay lại khi sử dụng GUI chính của Java là Applet và Applet thường sẽ tải hình ảnh chậm qua mạng.

Để làm cho các nhà văn Applet dễ dàng hơn, java đã cho chúng tôi một api MediaTracker thú vị để tải xuống hình ảnh ở chế độ nền, theo dõi khi chúng được thực hiện và thậm chí cung cấp thông báo khi hình ảnh là partially loaded. API MediaTracker có nghĩa là các nhà văn Applet không phải chặn ứng dụng trong khi hình ảnh được tải xuống chậm và không phải viết mã luồng phức tạp để tải hình ảnh trong các chủ đề nền.

Những ngày này, bạn thường có thể tải hình ảnh một cách đồng bộ và tốt nhất là sử dụng ImageIO. Điều này đặc biệt đúng đối với trường hợp thông thường khi ảnh được tải từ hệ thống tệp cục bộ.

3

MediaTracker

?

Tham gia với chúng tôi vào thiên niên kỷ thứ 3 và sử dụng ImageIO.read(File/URL/InputStream). Trong thiên niên kỷ, MediaTracker của chúng tôi không liên quan.

+0

miễn là [các đoạn mã đó] (http://www.java2s.com/Code/Java/2D-Graphics-GUI/ConvertjavaawtimageBufferedImagetojavaawtImage.htm) đang trực tuyến, MediaTracker sẽ không chết. – oliholz

+1

Đây là [một bài viết] (http://weblogs.java.net/blog/chet/archive/2004/07/imageio_just_an.html) mở rộng các đặc tính của ImageIO trên MediaTracker. –

+2

Điều này không cung cấp câu trả lời cho câu hỏi. Để phê bình hoặc yêu cầu làm rõ từ tác giả, hãy để lại nhận xét bên dưới bài đăng của họ. –

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