2013-04-30 55 views
0

我目前正在解碼來自遠程服務器的編碼幀。現在我有一些不同的線程。一個線程用於接收,一個用於解碼,另一個用於查看。所有這些都是從活動類(主線程)創建的。現在,我將父類的一個對象發送到Viewer類以訪問ImageView。在該ImageView中,我只寫了下面的代碼片斷。Android的ImageView從不同的線程走得很慢

m_ImageView.post(new Runnable() {  
    @Override 
    public void run() { 
     // TODO Auto-generated method stub 
     m_ImageView.setImageBitmap(m_bImage); 
     m_iDecompressedImage = null; 
    } 
}); 

這裏m_ImageView是ImageView,而m_bImage是位圖圖像。但是有一個表現問題。這裏瀏覽器線程非常慢。我不知道其他有效的工作方式。請給我點光。

回答

0

有從服務器接收的圖像和解碼確保使用適當的採樣速度和存儲效率,如果一個後臺線程必要。

Bitmap存儲在某個緩存中,可能是LruCache,使用Handler.Callback可以在圖像下載成功或失敗時處理消息。使用該Handler.Callback在UI線程上初始化一個Handler,並在解碼完成並存儲該映像時從後臺線程向其發送消息。

這只是當然的方法的主旨,如果你不感興趣,你可以插入一個開發的圖書館爲此延遲加載圖像。

+0

謝謝你的回覆。現在我的問題是UI線程是否需要在主活動類/線程中實現? – Srikanta 2013-04-30 09:07:40

+0

UI線程是主線程,它不需要啓動,它處理來自用戶的事件,這是修改'View's的地方。 – 2013-04-30 09:27:31

+0

謝謝您的回覆。你的指導告訴我必須在主線程中使用ImageView。這意味着來自解碼器線程的處理程序將通知主線程更新提供當前位圖的UI線程。 – Srikanta 2013-04-30 09:52:26